在JavaScript依照Resolve的顺序处理Promise
2021-07-05 本文已影响0人
厚特儿
在JavaScript的PromiseAPI中,要处理一个Promise的集合,有Promise.all()、Promise.any()、...等等,可是这些API要么要等全部的Promise都完成了,要么是任一个,而且只有一个Promise完成了,才能串接后续的处理,没有那种依照完成的先后顺序一个接一个串接后续处理的API,不过没关系,利用Promise的特性,我们也能做到类似的效果。
Promise.all()+map()
Promise后面串接then()方法,会在Promise完成的时候呼叫它,利用这个特性,加上Promise.all()及map(),我们可以做出一个接一个先完成先处理的效果。
我的实验情景是这样的,我又5个Promise,这5个Promise个别会在完成的时候,吐出1~5的数字,但是完成的时间不一定。

然后我有一个加法器 adder ,按照这5个Promises完成的先后顺序,一一地将结果丢给加法器执行赋值运算,然后将结果打印出来,这边我们就需要动用到Promise.all()及map(),直接看下图代码:

预期的结果,应该会依次打印出4、2、1、3、5、15,让我们看执行结果。

以上,这个将Promises根据完成的先后顺序处理资料的方式,提供给大家参考,如果有朋友有更好的方法,还望不吝赐教。