Promise.all默认只要有一个错误就直接返回错误。promise.all中任何一个promise 出现错误的时候都会执行reject,导致其它正常返回的数据也无法使用

Promise.all([Promise.resolve(1), Promise.reject('err'), Promise.resolve(2)
]).then(res => {console.log(res)
}).catch(err => {console.log('error', err)
})// 结果返回: error err

如果我们数组有某些错误但不影响其他结果返回,应该对每项promise进行捕获。

Promise.all([Promise.resolve(1), Promise.reject('err'), Promise.resolve(2)].map(item => {return item.catch(err => {console.log('item error', err)})})
).then(res => {console.log(res)
}).catch(err => {console.log('error', err)
})
// 结果返回:
// item error err
//  [1, undefined, 2]

这样就可以实现不管某个出现问题,不影响最后结果的返回。

Promise.all 简版实践原理

function promiseAll(promises){return new Promise((resolve,reject) => {if (!Array.isArray(promises)) {return reject(new TypeError("argument must be anarray"))}let countNum=0;let promiseNum=promises.length;let resolvedvalue=new Array(promiseNum);for (let i=0; i<promiseNum; i++) {Promise.resolve(promises[i]).then(value =>{countNum++;resolvedvalue[i]=value;if(countNum===promiseNum){return resolve(resolvedvalue)}},reason => {return reject(reason)})}})
}

Promise.all捕获错误相关推荐

  1. (基础)Promise中catch()方法使用,捕获错误(拒绝)

    如果Promise抛出错误,then中没有处理就会报错 报错情况 // 这样会报错,因为没有处理promise的拒绝 const promise = new Promise((resolve, rej ...

  2. 【JavaScript】try/catch和Promise.catch捕捉错误的区别?

    [JavaScript]try/catch和Promise.catch捕捉错误的区别? 前言 try/catch 阶段总结 Promise.catch 阶段总结 实际应用 总结 前言 try/catc ...

  3. Boost概念的function_requires() 检查库在预期的情况下会捕获错误

    Boost概念的function_requires() 检查库在预期的情况下会捕获错误 实现功能 C++实现代码 实现功能 Boost概念的function_requires() 检查库在预期的情况下 ...

  4. boost:验证Boost概念检查的class_requires 库应该在预期的时间内捕获错误

    boost:验证Boost概念检查的class_requires 库应该在预期的时间内捕获错误 实现功能 C++实现代码 实现功能 boost:验证Boost概念检查的class_requires 库 ...

  5. PHP的异常处理异常捕获错误类

    1.错误分类 Fatal Error:致命错误(脚本终止运行)E_ERROR // 致命的运行错误,错误无法恢复,暂停执行脚本E_CORE_ERROR // PHP启动时初始化过程中的致命错误E_CO ...

  6. bat/cmd 抛出错误码和捕获错误

    前言 略 抛出错误码 @echo off:: 命令1 IF %ERRORLEVEL% NEQ 0 GOTO ERROR :: 命令2 IF %ERRORLEVEL% NEQ 0 GOTO ERROR ...

  7. php register_shutdown_function响应error 配合error_get_last 捕获错误

    register_shutdown_function 函数,当我们的脚本执行完成或意外死掉导致PHP执行即将关闭时,我们的这个函数将会 被调用,可以配合 error_get_last 使用,代码如下, ...

  8. ci 数据库异常捕获_系统地捕获错误:如何通过4个步骤构建GitLab CI测试管道

    ci 数据库异常捕获 by Joyz 通过乔伊斯 系统地捕获错误:如何通过4个步骤构建GitLab CI测试管道 (Catch bugs systematically: how to build a ...

  9. [react] React中在哪捕获错误?

    [react] React中在哪捕获错误? 在react 15 极其以前的版本中,组件内的UI异常将中断组件内部状态,导致下一次渲染时触发隐藏异常.React并未提供友好的异常捕获和处理方式,一旦发生 ...

最新文章

  1. SpringBoot 统一时区的方案
  2. ADOQuery1.FieldByName AsString trim
  3. 怎么使用oracle的加权平均数_GPA不足,怎么短期有效提升?快来收获100%录取的秘诀!...
  4. 图像处理:图像中噪声分布和概率密度函数的关系
  5. 【数据平台】pandas将一列中的文本拆分成多行
  6. mysql数据库外连
  7. 企业级系统应用,高级组合查询示例讲解 - Jeecg实战
  8. 3dmax材质丢失插件_3dmax插件排行|室内设计师效果图用疯狂模渲大师,怎么把cononra材质转换成vray材质?...
  9. Spring-@Value
  10. 汇编指令入门级整理 | 原力计划
  11. 关于MySQL分表操作的研究
  12. c#如何生成Excel(.xls和.xlsx)文件
  13. html 动画过度转换的用法,css(动画,过渡,转换)
  14. Cocostudio使用简介
  15. 课程设计题二:7人多数表决器
  16. Mysql 计算经纬度距离
  17. 自己制做python3.6精简绿色版
  18. 2021年“上海区块链周”参会随感(二)2021-04-12
  19. steps_per_epoch=2000,epochs=100之间的区别
  20. 从前装量产数据看“软硬分离”与“市场博弈”

热门文章

  1. c# spire.xls 设置文字为微软雅黑_Excel工作薄常规样式设置,WorkBook.Styles
  2. 5点击换gif_工具:GIF动态图片制作小课堂,开课啦!
  3. k8s之pod管理(控制器)
  4. 历届试题 打印十字图(模拟)
  5. ODPS主备集群双向数据复制导致主备中心网络打爆问题
  6. Flink + Iceberg,腾讯百亿级实时数据入湖实战
  7. Flink State 误用之痛,你中招了吗?
  8. 开放下载! | 《AI时代下的汽车业数字化变革》
  9. R语言数据挖掘实践——系谱聚类
  10. For the king:出色的冒险,失败的角色扮演