一文搞懂 Promise 新 Api allSettled 的用法和 all 区别,以及如何在不支持新特性的环境下实现一个 Polyfill

这篇具有很好参考价值的文章主要介绍了一文搞懂 Promise 新 Api allSettled 的用法和 all 区别,以及如何在不支持新特性的环境下实现一个 Polyfill。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

开始

一文搞懂 Promise 新 Api allSettled 的用法和 all 区别,以及如何在不支持新特性的环境下实现一个 Polyfill

allSettled 的用法

const runAllSettled = async () => {
    const successPromise = Promise.resolve('success') // 一个正常返回的 Promise
    const failPromise = Promise.reject('fail') // 一个异常返回的 Promise
    // 使用 allSettled
    const settiled = await Promise.allSettled([successPromise, failPromise, undefined, null])
    console.log(settiled)
    /*  输出结果如下
            [
                {status: 'fulfilled', value: 'success'},
                {status: 'rejected', reason: 'fail'},
                {status: 'fulfilled', value: undefined},
                {status: 'fulfilled', value: null},
            ]
    */
}
runAllSettled()
  • 返回一个数组,每一个元素都是一个对象,里面必然包含 status 属性
  • status 属性只会有两个值,fulfilled 或者 rejected,非黑即白的既即视感
  • allSettled 总是走 then 的,也就是并发的 Promise 出现 reject 也不会走 catch,需要自行遍历返回的数组,判断 status 来做错误捕获
  • 对象中还有另外两个属性,valuereason。根据 promise 的状态返回,如果成功返回,即为 value,反之为 reason
  • 更详细的 TS 类型在这里 lib.es2020.promise.d.ts

all 的用法

  • all 的用法就不再详细赘述,可前往 MDN 查看

区别

功 能 Promise.all Promise.allSettled
并发
并发Promise中出现 reject 是否还走 then

在不支持 Promise.allSettled 新特性的环境下实现一个 Polyfill

// 通过 Promise.all 实现 Promise.allSettled
if (!Promise.allSettled) {
	Promise.allSettled = function (promises) {
		return Promise.all(
			promises.map((p) =>
				Promise.resolve(p).then(
					(value) => ({
						status: "fulfilled",
						value,
					}),
					(reason) => ({
						status: "rejected",
						reason,
					})
				)
			)
		);
	};
}

文章来源地址https://www.toymoban.com/news/detail-428101.html

到了这里,关于一文搞懂 Promise 新 Api allSettled 的用法和 all 区别,以及如何在不支持新特性的环境下实现一个 Polyfill的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Promise.allSettled()方法介绍

    本篇文章介绍  Promise  对象的 Promise.allSettled()  方法,另外的关于  Promise  文章 可以看我的 ES6专栏 首先通过 promise 对象实现 Ajax (如下) ,后面 在代码中 会使用到  有时候,我们希望等到一组异步操作都结束了,不管每一个操作是成功还是失败,再进行下一步操作。但

    2023年04月09日
    浏览(23)
  • vue同时请求多个接口,接口请求完成后在处理下一个方法(Promise.all用法)

    Promise .all()方法用于将多个 Promise 实例,包装成一个新的 Promise 实例。 在处理多个异步处理时非常有用,比如说一个页面上需要等两个或多个ajax的数据回来以后才正常显示。 需要特别注意的是,Promise.all获得的成功结果的数组里面的数据顺序和Promise.all接收到的数组顺序是一

    2024年02月13日
    浏览(43)
  • 一文搞懂Nuxt3基本用法

    在前后端分离出现之前,传统的web页面都是服务端渲染的,如JSP、PHP、Python Django,还有各种模板技术Freemarker, velocity,thymeleaf、mustache等等。其实这套技术都挺成熟的,也用了很多年。 但前后端分离出现后,带来两个好处: 工程上的分工,让前端专门盯前端技术,开发效率上

    2024年02月05日
    浏览(37)
  • 一文搞懂 MySQL 中的常用函数及用法

    MySQL是一种常用的关系型数据库管理系统,它提供了许多内置函数来处理数据。本文将介绍MySQL中的各种常用函数,包括字符串函数、日期函数、数学函数、聚合函数等。 1.1CONCAT函数 CONCAT函数用于将两个或多个字符串连接在一起。它的语法如下: 其中,str1、str2等为要连接的

    2024年02月10日
    浏览(28)
  • 一文搞懂JS-Web-API——DOM

    🌈本系列文章是博主精心整理的面试热点问题,吸收了大量的技术博客与面试文章,总结多年的面试经历,带你快速建立前端面试知识体系。抓住每一场面试的机会,知己知彼才能百战百胜。直击技术痛点,主动出击,精密打击,这才是面试拿到高薪的秘诀! 本系列订阅 一

    2024年01月17日
    浏览(38)
  • 一文搞懂Win10和Win11区别在哪里!

    Windows10于2015年7月发布,Windows11于2021年6月发布。除了视觉效果的差异外,在性能、稳定性和功能上也存在显着差异。因此,请您详细阅读以下内容,充分了解Windows 10和11之间的差异,这将帮助您清楚地搞懂Windows10和Windows11哪个好,并且快速做出是否将Windows10升级到Windows11的判

    2024年02月04日
    浏览(22)
  • 一文搞懂!最好用的七大顶级 API 接口测试工具

    现在 API 接口已经成为软件开发重要的组成部分,由于 API 并没有 GUI 图形界面,无法直观的对接口进行测试,所以对于前后端开发来说,找到一套趁手的工具对 API 接口进行测试,了解开发的程序是否符合预期十分重要。 面对批量的 API,手动测试变得非常低效,自动化 API 接

    2024年02月15日
    浏览(35)
  • 一文1000字彻底搞懂Web测试与App测试的区别

    总结分享一些项目需要结合Web测试和App测试的工作经验给大家: 从功能测试区分,Web测试与App测试在测试用例设计和测试流程上没什么区别。 而两者的主要区别体现在如下几个方面: Web项目,B/S架构,基于浏览器的;Web测试过程中,客户端会随服务器端同步更新,所以只需

    2024年02月08日
    浏览(32)
  • Nginx详解(一文搞懂Nginx)以及Linux版本下安装

            Nginx(发音为\\\"engine X\\\")是一个流行的开源Web服务器软件。它最初由Igor Sysoev开发,并于2004年首次发布。Nginx的目标是提供高性能、高可靠性和低内存消耗的Web服务器,同时也可以用作反向代理服务器和负载均衡器。         Nginx以其优越的性能和高度可扩展性而

    2024年02月09日
    浏览(37)
  • 【微信小程序】一文搞懂条件渲染、列表渲染以及wxss模板样式

    🐚作者简介:苏凉(专注于网络爬虫,数据分析,正在学习前端的路上) 🐳博客主页:苏凉.py的博客 🌐系列专栏:小程序开发基础教程 👑名言警句:海阔凭鱼跃,天高任鸟飞。 📰要是觉得博主文章写的不错的话,还望大家三连支持一下呀!!! 👉关注✨点赞👍收藏📂

    2024年01月16日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包