async函数

237 阅读1分钟

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 对象:直接返回对应的值。