前言
async 函数是什么?一句话,它就是 Generator 函数的语法糖。
简单研究原理
async function fn() {
var a = 1
await getApi();
var b = 2
return b
}
等同于:
function fn() {
return Promise.resolve().then(function () {
var a = 1
return getApi();
}).then(function () {
var b = 2
return b;
});
}
遇到async
函数就生成一个Promise.resolve()
,遇到await
就生成.then
进行回调。这就是对async,await最简单理解。
优势:
- 简约
- try,catch处理错误更方便
- 解决回调地狱问题
- 传递中间值更简单
const request = async () => {
const value1 = await promise1()
const value2 = await promise2(value1)
return promise3(value1, value2)
}
- 报错能告诉我们是哪个函数,定位错误方便,promise就不行。
Error: error at request
*debugger方便,await前都可以打断点,但是promise的then不行。
网友评论