You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
asyncfunctionrunPromisesSerially(tasks){asyncfunction*asyncGenerator(){leti=0while(i<tasks.length){constval=awaittasks[i]()i++yieldval}}forawait(valofasyncGenerator()){// do something}}
使用Promise实现串行
Promise
原型上的then
方法以及Async/Await
基本用法大家都熟悉,不作过多介绍。下面的实现方法本质上也都是基于以上两种用法的拓展。
普通循环
理论上任何循环函数或语法都可实现。
Array.reduce
上面方法通过循环任务数组,不断在promise后使用
.then(nextTask)
拼接任务,仔细想想很适合用reduce
来实现:Async/Await
+ 循环while
循环也可实现。递归
for await of
需要自己实现可异步迭代的对象供
for await of
调用。for await of
+Async Generator
本质上是异步生成器函数()执行会自动生成异步迭代器,然后异步迭代器可配合
for await of
实现串行运行promises
。Generator
Generator本身只是一个状态机,需要通过调用
promise.then()
来改变它的状态,实现promises
的串行执行。The text was updated successfully, but these errors were encountered: