在JavaScript中几乎所有的函数都是异步的,这有好处,但也引起了一些问题。比如,如何保证异步函数按顺序执行呢?
举个例子,有三个任务:A, B , C ,因为是异步函数,所以JS几乎会同时调用这三个函数,谁先执行完,谁后执行完并不知道。如果是不相关的三件事倒还好,如果你需要它们顺序执行的话,那可要费点劲了。
前面我提到Promise的解决方案,A -> B -> C ,它有专门的 .then的用法,有点类似这样:
1 | Promise{ |
这种用法还不错,但还有一种更好的方案,那就是async/await异步队列!用它写的话是这样的:
1 | async{ |
这种写法更符合人的思维逻辑,更容易理解。async函数还比较新,webpack打下包也能用的。用它来写队列真是一个完美的方案。
多个异步任务用async/await来解决是个完美的方案,前提是这些异步任务都要用Promise包装一下,要有一个明确的结束点,否则谁也没法知道结束的时间点。
完成了promise函数的封装,把它们丢进async函数中就行啰。
1 | async function main(){ |
async函数和普通函数写法差不多,没有太大的差异,但它却能解决异步的问题,是个相当完美的方案!
This page is synchronized from the post: ‘async/await完美解决异步队列 / 网络研习社#46’