javascript怪癖(在JavaScript中最新特性实现的三大黑科技)
javascript怪癖(在JavaScript中最新特性实现的三大黑科技)async function taskReducer(promise action){ let res = await promise; return action(res);这个 reducer 的两个参数是 promise 和 action,promise 是代表当前任务的 promise,而 action 是下一个要执行的任务。我们可以 await 当前 promise 执行当前任务,然后将执行结果传给下一个 action 就可以了。这样我们可以调用:[task1 task2 task3 ...].reduce(taskReducer init);不管这些任务是同步还是异步都可以被 依次执行 。需要注意的是,每一个任务的返回值将是下一个任务的输入 promise 或者 value。
一、依次执行多项异步任务
有时候,我们希望批量执行一组异步任务,但是不是 并行 ,而是依次执行,这组任务是动态的,在一个数组里,当然我们可以用 for 循环然后一个一个 await 执行,但是还有另外一种方式:
JS Bin on jsbin.com
在上面的例子里,我们定义了一个 taskReducer:
async function taskReducer(promise action){ let res = await promise; return action(res);
这个 reducer 的两个参数是 promise 和 action,promise 是代表当前任务的 promise,而 action 是下一个要执行的任务。我们可以 await 当前 promise 执行当前任务,然后将执行结果传给下一个 action 就可以了。
这样我们可以调用:
[task1 task2 task3 ...].reduce(taskReducer init);
不管这些任务是同步还是异步都可以被 依次执行 。需要注意的是,每一个任务的返回值将是下一个任务的输入 promise 或者 value。