前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >听说你还不知道Promise的allSettled()和all()的区别?

听说你还不知道Promise的allSettled()和all()的区别?

作者头像
秋风的笔记
发布2020-10-27 11:42:31
3.1K0
发布2020-10-27 11:42:31
举报
文章被收录于专栏:秋风的笔记

译文来自 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」,回复加群,即可加入交流群。

「点赞在看分享」是对作者最大的支持❤️

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 秋风的笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 往期异步函数相关?
  • Promise.all()?
  • Promise.allSettled()?
  • 区别?
  • 浏览器支持 ?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档