听说你还不知道Promise的allSettled()和all()的区别?
译文来自 https://dev.to/viclafouch/promise-allsettled-vs-promise-all-in-javascript-4mle 原作者 Victor de la Fouchardière 译者: 蓝色的秋风(github/hua1995116)
往期异步函数相关?
Hello! ??
从 ES2015 起, promises 的出现,让我们简化了异步操作。(所以 promise 越来越流行,掌握它的相关 API 变得至关重要)。
让我们来看看以下两个 Promise 方式及他们差异:
- Promise.allSettled(可迭代)
- Promise.all(可迭代)
他们两个都传入可 迭代对象
,并返回一个已完成的 Promises 的数组
。
❓那么,它们之间有什么区别呢?
Promise.all()?
Promise.all()
方法将一组可迭代的 Promises 作为输入,并返回一个 Promise ,该 Promise resolve 的结果为刚才那组 输入 promises 的返回结果。
正如你看到的那样,我们将数组传递给 Promise.all
。当三个 promise 都完成时,Promise.all
就完成了,并且输出被打印了。
现在,让我们看看其中一个 promise 失败了的情况,如果这个 promise 失败了,又会 输出什么呢??
如果其中一个 promise 失败了
,则 Promise.all
整体将会失败。例如,我们传递2个 promise, 一个完成的 promise 和 一个 失败的promise,那么 Promise.all
将立即失败。
Promise.allSettled()?
从 ES2020 开始,你可以使用 Promise.allSettled
。当所有的 promises 都已经结束无论是完成状态或者是失败状态,它都会返回一个 promise,这个 promise 将会包含一个关于描述每个 promise 状态结果的对象数组。
对于每个结果对象,都有一个状态
字符串:
-
fulfilled(完成)
✅ -
rejected(失败)
❌
返回值(或原因)表现每个 promise 的完成(或失败)。
仔细观察结果数组的以下属性(status-状态
,value-值
,reason-原因
)。
区别?
-
Promise.all
将在 Promises 数组中的其中一个 Promises 失败后立即失败。 -
Promise.allSettled
将永远不会失败,一旦数组中的所有 Promises 被完成或失败,它就会完成。
浏览器支持 ?
下面列出了Promise.allSettled()
和promise.all()
方法浏览器的支持情况:
Promise.allSettled()
promise.all()
❤️ 看完两件小事
如果你觉得这篇内容对你挺有启发,我想邀请你帮我三个小忙:
1.点个「在看」,让更多的人也能看到这篇内容(喜欢不点在看,都是耍流氓 )
2.欢迎关注公众号 「秋风的笔记」,主要记录日常中觉得有意思的工具以及分享开发实践,保持深度和专注度。
3.加微信「qiufengblue」,回复加群,即可加入交流群。
「点赞在看分享」是对作者最大的支持❤️
- C语言第三讲,基本数据类型
- 64位内核第二讲,进程保护之对象钩子
- x64内核HOOK技术之拦截进程.拦截线程.拦截模块
- Spring开启方法异步执行
- 64位内核第一讲,和32位内核的区别
- Maven精选系列--发布jar包到Nexus私库
- 《SpringMVC从入门到放肆》五、SpringMVC配置式开发(处理器适配器)
- 《SpringMVC从入门到放肆》四、SpringMVC配置式开发(处理器映射器)
- 什么是Spring Boot?
- 《SpringMVC从入门到放肆》三、DispatcherServlet的url-pattern配置详解
- 《SpringMVC从入门到放肆》二、SpringMVC的执行流程及默认配置
- 《SpringMVC从入门到放肆》一、概述
- Spring import配置文件使用占位符
- 阿里Druid连接池的坑。。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法