ES11(2020)Promise 扩展 allSettled() admin 2023-05-29 10:21:01 篇首语:本文由小编为大家整理,主要介绍了ES11(2020)Promise 扩展 allSettled()相关的知识,希望对你有一定的参考价值。 我们都知道 Promise.all() 具有并发执行异步任务的能力。但它的最大问题就是如果其中某个任务出现异常(reject),所有任务都会挂掉,Promise直接进入reject 状态。 但是,假如几个异步任务都是互不关联的,彼此结果不影响, Promise.all() 就不能使用了,因为如果一个任务失败了,其他的任务也会失败。 Promise.allSettled()方法返回一个在所有给定的promise都已经fulfilled或rejected后的promise,并带有一个对象数组,每个对象表示对应的promise结果。当有多个彼此不依赖的异步任务成功完成时,或者总是想知道每个promise的结果时,通常使用它。 Promise.all([ Promise.reject( code: 500, msg: "服务异常" ), Promise.resolve( code: 200, data: ["1", "2", "3"] ), Promise.resolve( code: 200, data: ["4", "5", "6"] )]).then(res => console.log(res) console.log("成功")).catch(err => console.log(err) console.log("失败"))// 输出 "code":500,"msg":"服务异常" "失败" Promise.allSettled 可以解决这种问题,在并发任务中,无论一个任务正常或者异常,都会返回对应的的状态: Promise.allSettled([ Promise.reject( code: 500, msg: "服务异常" ), Promise.resolve( code: 200, data: ["1", "2", "3"] ), Promise.resolve( code: 200, data: ["4", "5", "6"] )]).then(res => console.log(res) // console.log("成功") const data = res.filter(item => item.status === "fulfilled") console.log(data)).catch(err => console.log(err) console.log("失败"))// 输出["status":"rejected","reason":"code":500,"msg":"服务异常","status":"fulfilled","value":"code":200,"data":["1","2","3"],"status":"fulfilled","value":"code":200,"data":["4","5","6"]]以上是关于ES11(2020)Promise 扩展 allSettled()的主要内容,如果未能解决你的问题,请参考以下文章 pytorch torch.empty()函数(返回填充有未初始化数据的张量。 张量的形状由可变的参数大小定义) python判断文件或文件夹是否存在 您可能还会对下面的文章感兴趣: 相关文章 浏览器打不开网址提示“ERR_CONNECTION_TIMED_OUT”错误代码的解决方法 如何安装ocx控件 VMware的虚拟机为啥ip地址老是自动变化 vbyone和EDP区别 linux/debian到底怎么重启和关机 苹果平板键盘被弄到上方去了,如何调回正常? 机器学习常用距离度量 如何查看kindle型号