JS async和await关键字

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...
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容