async、await
ES7关键字,处理异步函数
async函数返回的是Promise对象
// async函数返回的是promise对象
async function ac(){
return 1 ; // 封装返回一个Promise对象
}
console.log(ac()); // 返回一个promise对象
async function ac2(){
return Promise.resolve(1); // 直接返回promise
}
console.log(ac2()); // 返回一个promise对象
await
得到异步操作的结果,对应Promise.then(),必须写在async函数中
// // aWait得到异步操作的结果,对应Promise.then() 必须在async函数中使用
// 1.直接await一个promise对象
async function ac3() {
let b = Promise.resolve(1);
let data = await b; // 相当于a().then(r=>console.log(r))
console.log(data);
console.log(11);
}
ac3();
- 我们可以直接await一个promise对象
- 也可以await一个值
async function ac6 () {
let b = Promise.resolve("aa")
let data = await b;
console.log("data",data);
}
ac6();
async function ac4(){
let data = await 4;
console.log(data);
}
ac4();
async函数中遇到await表达式会强制暂停,等待异步操作完毕,恢复执行顺序
function time (){
return new Promise(res=>{
setTimeout(()=>{
console.log("lalala");
res();
},1000)
})
}
async function ac5 (){
await time(); // 如果没有await,那么ac5会打印在前面,有await会ac5会打印在后面
console.log("ac5");
}
ac5();