Promise.all 和Promise.race具有短路特性

    1. Promise.all([
    2. Promise.reject({code: 500, msg: '服务异常'}),
    3. Promise.resolve({ code: 200, list: []}),
    4. Promise.resolve({code: 200, list: []})
    5. ])
    6. .then((ret) => {
    7. // 如果其中一个任务是 reject,则不会执行到这个回调。
    8. RenderContent(ret);
    9. })
    10. .catch((error) => {
    11. // 本例中会执行到这个回调
    12. // error: {code: 500, msg: "服务异常"}
    13. })

    **

    如何通过代码来避免Promise.all()的短路特性?

    **

    1. Promise.allSettled([
    2. Promise.reject({code: 500, msg: '服务异常'}),
    3. Promise.resolve({ code: 200, list: []}),
    4. Promise.resolve({code: 200, list: []})
    5. ])
    6. .then((ret) => {
    7. // 过滤掉 rejected 状态,尽可能多的保证页面区域数据渲染
    8. RenderContent(ret.filter((el) => {
    9. return el.status !== 'rejected';
    10. }));
    11. });