JavaScript中Promise.all和Promise.race方法是什么

  介绍

这篇文章主要介绍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方法是什么”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

JavaScript中Promise.all和Promise.race方法是什么