1、优点:
方便级联调用;使用类似于同步代码的编写方式;可以一次传递多个参数;同步代码和异步代码可以一起编写;基于协程;是对Promise的优化。
2、级联调用、同步代码方式、传递参数
/**
* @description 返回花费的时间
* @params n,表示这个函数执行的时间(毫秒)
* 返回的值会在async/await调用时让前一个方法的结果作为后一个的参数
* n + 100为了不让打印出的都是300
*/
function takeLongTime(n) {
return new Promise(resolve => {
setTimeout(() => resolve(n + 100), n);
});
}
// 方法step1、step2、step3用setTimeout模仿异步请求
function step1(n) {
console.log(`step1 with ${n}`);
return takeLongTime(n);
}
function step2(n) {
console.log(`step2 with ${n}`);
return takeLongTime(n);
}
function step3(n) {
console.log(`step3 with ${n}`);
return takeLongTime(n);
}
// step1执行完才会执行step2(级联),三个await相当于同步的赋值操作方式,每个await传递的参数不是同一个
async function doList() {
console.time("doList");
const time