async/await是语法糖,可以让我们以同步代码的写法执行异步逻辑。
async/await语法
需要注意的是await后面的代码执行逻辑,几个示例
demo1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| async function async1() { console.log("async1 start"); await async2(); console.log("async1 end"); } async function async2() { console.log("async2 end"); }
console.log("script start"); async1(); console.log("script end");
|
demo2: 为了演示await async1的效果,外面又套了一层async方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| (async function () { async function async1() { console.log("async1 start"); await async2(); console.log("async1 end"); } async function async2() { console.log("async2 end"); }
console.log("script start"); await async1(); console.log("script end"); })();
|
与Promise的关系
关于捕获异常
try…catch无法捕获Promise的reject。而await则可以
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| try { Promise.reject("promise error"); } catch { console.log("get promise error"); }
(async function () { try { await Promise.reject("error"); } catch { console.log("get async error"); } })();
|