Promise.all 和Promise.race具有短路特性
Promise.all([Promise.reject({code: 500, msg: '服务异常'}),Promise.resolve({ code: 200, list: []}),Promise.resolve({code: 200, list: []})]).then((ret) => {// 如果其中一个任务是 reject,则不会执行到这个回调。RenderContent(ret);}).catch((error) => {// 本例中会执行到这个回调// error: {code: 500, msg: "服务异常"}})
**
如何通过代码来避免Promise.all()的短路特性?
**
Promise.allSettled([Promise.reject({code: 500, msg: '服务异常'}),Promise.resolve({ code: 200, list: []}),Promise.resolve({code: 200, list: []})]).then((ret) => {// 过滤掉 rejected 状态,尽可能多的保证页面区域数据渲染RenderContent(ret.filter((el) => {return el.status !== 'rejected';}));});
