JS async和await关键字

作者: 微语博客 | 来源:发表于2021-10-10 21:51 被阅读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...
    

    相关文章

      网友评论

        本文标题:JS async和await关键字

        本文链接:https://www.haomeiwen.com/subject/vldkoltx.html