ES6-async(异步)/await(等待)

ES6-async(异步)/await(等待)

作用

  • async await 把异步操作以同步的形式进行显示 (本质还是异步操作)

  • 生成异步,等待异步完成,实现异步代码的扁平化

  • async 函数返回的是一个 Promise 对象,如果在函数中return 一个直接量,async 会把这个直接量通过Promise.resolve() 封装成 Promise 对象。

用法示例

 //不加async await
 function foo () {
   Promise.resolve().then(resolve => {
    console.log("1");
  });
  console.log(3);
}
foo();//3  1

在上面函数中,因为Promise是异步操作,所以会先执行主线任务,在执行异步任务所以结果先输出3,再输出1

 //加了async await
async function foo () {
  await Promise.resolve().then(resolve => {
    console.log("1");
  });
  console.log(3);
}
foo();//1 3

加了async await,先表明这是一个异步函数,从任务队列中开始向下执行,碰到await,就是先等待异步任务执行完毕,再向下执行

如何理解

1、async是异步的意思,await是等待的意思,async是声明一个异步函数,await是等待异步函数执行完毕;

await必须写在在async函数中;
async函数的执行可以在任何函数中;

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

3、 await针对所跟不同表达式的处理方式:

  • Promise 对象:await 会暂停执行,等待 Promise 对象 resolve,然后恢复 async 函数的执行并返回解析值。
  • 非 Promise 对象:直接返回对应的值。
posted @ 2022-06-09 18:56  秋弦  阅读(387)  评论(0编辑  收藏  举报