async与await

99 阅读1分钟

async与await

可以理解为Promise的一个语法糖

async:我们可以使用async来快速创建一个异步函数,被async创建的函数,他的函数返回值会被包装成为一个Promise,比如说

async function fn() {
   return 10
}
fn()   //     Promise {<fulfilled>: 10}

async声明的异步函数中可以使用await来调用其他异步函数

async function fn1() {
    return 10
}
async funcrion fn2() {
    let result = await fn1()  //   10
}

在调用异步函数时,可以直接在异步函数前使用await关键字来对其进行调用,调用await,它会等待Promise执行出结果后,将结果返回,此时可以使用变量接收。但是要注意的是await并不是将异步函数变为同步函数,只是改变了异步函数的调用方式,所以await并不是在任何位置都能用的,在我们使用await,catch方法将不能再使用,只能使用try catch来处理异常

对于await的书写位置:

1:async声明的异步函数中

2:可以在模块的外层的作用域中使用await

创建一个a.js的文件:

async function fn() {
  return 10;
}
let result = await fn();
console.log("----", result);
export const a = 10;

在html文件中,声明了type为module的脚本中执行时

<script type="module">
      import {a} from './a.js'
      async function fn() {
        return 10
      }
      async function fn1() {
        let result = await fn()
        console.log(result)
      }
      fn1()
</script>

最终控制台打印

---- 10
10