#Async Await ES2017 (这一块除了基础使用部分, 还要重新看一次)
Async Function
在ES6里, 我们有了Promise,这让我们的callback hell的处境又所好转, 但是, Promise依旧还是一个回调地狱.
1 | fetchCurrentUser().then(function onUser (user) { |
所以我们有了async/await.一种同步语法写异步的操作.
在我们了解async/await的时候,让我们从generators开始, 在各种node写的server端的库都有类似的一个runner函数, 你用generators产生了一个promise, 然后等待这个promise完成后, 给你返回值, 然后再往下走。感受一下, 这个是不是很像我们的async/await语法。
1 | runner(function *main() { |
接下来看一下async/await
1 | async function main() { |
Async Iteration
我们平常使用的map, forEach函数都是基于同步的循环。他们遇到promise不知道怎么处理。
当我们在循环里嵌套await其实是存在问题的。基于我们的练习, 你可能会写出这样的代码
1 | async fuction fetchFiles (files) { |
Async Function Problems —(不是很懂, 要回去再看一次)
Async Generators with yield
1 | async function fetchURLs() { |