1.语法:
async function name([param[, param[, ... param]]]) {
statements
}
- name: 函数名称。
- param: 要传递给函数的参数的名称。
- statements: 函数体语句
2.返回值
async 函数返回一个 Promise 对象,可以使用 then 方法添加回调函数。
async function helloAsync(){
return "helloAsync";
}
console.log(helloAsync()) // Promise {<resolved>:"helloAsync"}
helloAsync().then(v=>{
console.log(v); // helloAsync
})
2.1 await关键字
await 关键字仅在 async function 中有效。如果在 async function 函数体外使用 await ,你只会得到一个语法错误。
async 函数执行时,如果遇到 await 就会先暂停执行 ,等到触发的异步操作完成后,恢复 async 函数的执行并返回解析值。
function testAwait(){
return new Promise((resolve) => {
setTimeout(function(){
console.log("testAwait");
resolve();
}, 1000);
});
}
async function helloAsync(){
await testAwait();
console.log("helloAsync");
}
helloAsync();
// testAwait
// helloAsync
await aaa(),await把他描述的函数aaa放进new Promise 里,把他后面的所有执行语句都放入.then里面 相当于 <==>
new Promise (()=>{
aaa() // 宏任务
}).then() // .then里为微任务
await针对所跟不同表达式的处理方式:
1.Promise 对象:await 会暂停执行,等待 Promise 对象 resolve,然后恢复 async 函数的执行并返回解析值。
2.非 Promise 对象:直接返回对应的值。