这篇文章主要介绍JavaScript中Promise.all和Promise.race方法是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
Promise.all()方法接受一个包含承诺对象或普通值的数组(或其它可迭代对象)作为参数,并返回一个承诺。当所有承诺对象都解决后,将所有解决值以数组形式作为Promise.all()解决的结果。如果其中之一的承诺被拒绝,立即以第一个拒绝的值作为Promise.all()拒绝结果。
在实际应用中,如果需要从几个接口获取数据,并且要在所有数据到达后才执行某些操作,就可以使用Promise.all ()。
const p1=new承诺(函数(解决){setTimeout(200年解决,1)}) const p2=Promise.resolve (2) const p3=3 的承诺。所有((p1, p2, p3))。然后(函数(res) {console.log (res)})//(1、2、3)
以下是代码实现,需要一个计数器,来确认所有承诺对象都已经解决,之后返回结果。需要一个数组,按顺序记录返回结果。如果使用类似为(var=0;我& lt;iterable(我);我+ +)的方式遍历,为避免闭包只能传入变量引用的问题,需要嵌套一层自执行函数。这里使用……在循环,使函数可以支持除数组外的其它可迭代对象,如数据结构集。
const所有=function (iterable) { 返回新的承诺(函数(解决,拒绝){ 让数=0,ans=new Array(计数) (我在iterable const) { const v=iterable(我) 如果(typeof v===& # 39;对象# 39;,,typeof v。然后===& # 39;函数# 39;){ v。然后(函数(res) { ans[我]=res 如果(——数===0)解决(ans) },拒绝) 数+ + 其他}{ ans[我]=v } } }) } const p1=新的承诺(函数(解决){setTimeout(200年解决,1)}) const p2=Promise.resolve (2) const p3=3 所有((p1, p2, p3))。然后(函数(res) {console.log (res)})//(1、2、3)
同Promise.all (), Promise.race()方法接受一个包含承诺对象或普通值的数组(或其它可迭代对象)作为参数,并返回一个承诺。一旦其中之一的承诺对象解决以后,立即把解决的值作为Promise.race()解决的结果。如果其中之一的对象拒绝,承诺。种族也会立即拒绝。
在实际应用中,如果可以从几个接口获取相同的数据,哪个接口数据先到就先用哪个,就可以使用Promise.race(),所需时间等于其中最快的那个接口。下面是代码:
const种族=function (iterable) { 返回新的承诺(函数(解决,拒绝){ (我在iterable const) { const v=iterable(我) 如果(typeof v===& # 39;对象# 39;,,typeof v。然后===& # 39;函数# 39;){ v。然后(决心,拒绝) 其他}{ 解决(v) } } }) } const p1=新的承诺(函数(解决){setTimeout(200年解决,1)}) const p2=新的承诺(函数(解决){setTimeout(100年解决,2)}) 种族((p1, p2))。然后(函数(res) {console.log (res)})//2
以上是“JavaScript中Promise.all和Promise.race方法是什么”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!