高级JSJavaScriptJavaScript入门教程

JS async和await关键字

2021-10-10  本文已影响0人  微语博客

async是es7新增的关键字,用于定义异步函数。通过async定义的函数返回一个Promise对象,可以通过.then的形式调用。await是等待 async 的异步执行,而且只能在 async 里面定义。

语法示例

async function myAsync(){
    return "async...";
}
console.log(myAsync());//Promise {result:async...}

async 函数返回一个 Promise 对象,可以使用 then 方法添加回调函数。

async function myAsync(){
    return "async...";
}
console.log(myAsync());//Promise {result:async...}
myAsync().then((value) => {
    console.log(value);//async...
});

async 函数中可能会有 await 表达式,async 函数执行时,如果遇到 await 就会先暂停执行 ,等到触发的异步操作完成后,恢复 async 函数的执行并返回解析值。

function testAwait(){
   return new Promise((resolve) => {
       setTimeout(function(){
          console.log("testAwait");
          resolve();
       }, 1000);
   });
}
async function myAsync(){
   await testAwait();
   console.log("async...");
}
myAsync();
//testAwait 
//async...

await 关键字仅在 async function 中有效。如果在 async function 函数体外使用 await ,你只会得到一个语法错误。

await

await 通常用于操作一个Promise对象,返回Promise对象的处理结果,如果不是Promise对象,则返回值本身。

function testAwait(x) {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve(x);
    }, 1000);
  });
}
async function myAsync(){
    let result = await testAwait("testAwait");
    console.log(result);
}
myAsync();//testAwait

await 也可以跟其他值,如字符串,布尔值,数值以及普通函数。

function test1(){
    console.log("test1...");
}
let myString = "Hello"
async function myAsync(){
    let str = await myString+"World";
    console.log(str);
    await test1();
    console.log("myAsync...");
}
myAsync();
//HelloWorld
//test1...
//myAsync...
上一篇下一篇

猜你喜欢

热点阅读