快捷搜索:  汽车  科技

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。

javascript怪癖(在JavaScript中最新特性实现的三大黑科技)(1)

javascript怪癖(在JavaScript中最新特性实现的三大黑科技)(2)

猜您喜欢: