如果在迭代器中如果你有一个长时间运行的同步逻辑和另一个长时间运行的异步任务,async/await版本任然常有用。
这种方式当能拿到第一个值,就可以开始做一些计算,而不必等到所有 Promise 完成才运行计算。尽管结果包裹在 Promise 中,按顺序执行结果会更快。
关于 filter 的问题
即使上面filter函数里面返回了 [ false, true, false, true ] , await asyncThing(value) 会返回一个 promise 那么你肯定会得到一个原始的值。可以在return之前等待所有异步完成,在进行过滤。
Reducing很简单,就是需要将初始值包裹在 Promise.resolve 中
重写基于callback的node应用成
Async 函数默认返回一个 Promise ,可以使用 Promises 来重写任何基于 callback 的函数,然后 await 等待他们执行完毕。在node中也可以使用 util.promisify 函数将基于回调的函数转换为基于 Promise 的函数
重写基于Promise的应用程序
要转换很简单, .then 将Promise执行流串了起来。可以直接使用`async/await。