如何实现Promise.all


这篇文章主要介绍“如免费云主机域名何实现Promise.all”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何实现Promise.all”文章能帮助大家解决问题。Promise.resolve(value) 方法返回一个以给定值解析后的Promise对象。如果这个值是一个 promise ,那么将返回这个 promise ;如果这个值是thenable(即带有”then”方法),返回的promise会“跟随”这个thenable的对象,采用它的最终状态;否则返回的promise将以此值完成。这是MDN上的解释,我们挨个看一下Promise.resolve最终结果还是一个Promise,并且与Promise.resolve(该值)传入的值息息相关传入的参数可以是一个Promise实例,那么该函数执行的结果是直接将实例返回这里最主要需要理解跟随,可以理解成Promise最终状态就是这个thenable对象输出的值小例子疑问从源码实现中,并没有看到对于thenable对象的特殊处理呀!其实确实也不需要在Promise.resolve中处理,真实处理的地方应该是在Promise构造函数中,如果你对这块感兴趣,马上就会写Promise的实现篇,期待你的阅读噢。Promise.reject() 方法返回一个带有拒绝原因的Promise对象。reject实现相对简单,只要返回一个新的Promise,并且将结果状态设置为拒绝就可以Promise.all()方法用于将多个 Promise 实例,包装成一个新的 Promise 实例。这个静态方法应该是面试中最常见的啦最终p的状态由p1、p2、p3决定,分成两种情况。(1)只有p1、p2、p3的状态都变成fulfilled,p的状态才会变成fulfilled,此时p1、p2、p3的返回值组成一个数组,传递给p的回调函数。(2)只要p1、p2、p3之中有一个被rejected,p的状态就变成rejected,此时第一个被reject的实例的返回值,会传递给p的回调函数。有时候,我们希望等到一组异步操作都结束了,不管每一个操作是成功还是失败,再进行下一步操作。显然Promise.all(其只要是一个失败了,结果即进入失败状态)不太适合,所以有了Promise.allSettledPromise.allSettled()方法接受一个数组作为参数,数组的每个成员都是一个 Promise 对象,并返回一个新的 Promise 对象。只有等到参数数组的所有 Promise 对象都发生状态变更(不管是fulfilled还是rejected),返回的 Promise 对象才会发生状态变更,一旦发生状态变更,状态总是fulfilled,不会变成rejected还是以上面的例子为例, 我们看看与Promise.all有什么不同可以看到:不管是全部成功还是有部分失败,最终都会进入Promise.allSettled的.then回调中最后的返回值中,成功和失败的项都有status属性,成功时值是fulfilled,失败时是rejected最后的返回值中,成功含有value属性,而失败则是reason属性Promise.race()方法同样是将多个 Promise 实例,包装成一个新的 Promise 实例。只要p1、p2、p3之中有一个实例率先改变状态,p的状态就跟着改变。那个率先改变的 Promise 实例的返回值,就传递给p的回调函数。聪明的你一定马上知道该怎么实现了,只要了解哪个实例先改变了,那么Promise.race就跟随这个结果,那么就可以写出以下代码关于“如何实现Promise.all”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注百云主机行业资讯频道,小编每天都会为大家更新不同的知识点。

相关推荐: C语言优化Python代码的方法是什么

这篇文章主要介绍了C语言优化Python代码的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言优化Python代码的方法是什么文章都会有所收获,下面我们一起来看看吧。Cython 创建的 C 模块可以加速 Pytho…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 03/12 17:51
Next 03/12 17:52

相关推荐