前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >async await语句

async await语句

作者头像
心念
发布2023-01-11 20:38:58
3700
发布2023-01-11 20:38:58
举报
文章被收录于专栏:前端心念前端心念

简述

async一般配合await才有用。可简化promise,省去.then的写法

在一个被async声明的函数内,await可把一个异步任务(promise)转为同步,阻塞后面的同步代码,让它们等待被await的任务执行完毕,再继续执行

await相当于Promise.then,同一作用域下await后面的内容全部作为then中回调的内容

async函数返回值

async函数的返回值为Promise对象,所以它可以调用then方法

代码语言:javascript
复制
1async function fn() {
2  return "async"
3}
4fn().then(res => {
5  console.log(res) // "async"
6})
7

深入理解await:

代码执行到await,有两种情况:

  • 场景一:await后面不是promise对象

先把await执行完(把这个非promise的东西,作为 await表达式的结果)。然后去把async外面的同步代码执行完,再回到async执行await后面被暂停的代码。

代码语言:javascript
复制
1console.log(1);
2
3async function fn() {
4  console.log(2);
5  await console.log(9);
6  console.log(10);
7}
8fn();
9
10console.log(3);
11
12// 1
13// 2
14// 9
15// 3
16// 10
  • 场景二:await后面是Promise对象(最常用)

执行完promise里的代码后,先去执行async外面的同步代码,再回来等待promise对象的状态改变,拿到结果,再执行后面被暂停的代码(如果状态不变则不会执行后面暂停的代码)

代码语言:javascript
复制
1console.log(1);
2
3async function fn() {
4  console.log(2);
5  await new Promise((resolve) => {
6    console.log(9);
7    setTimeout(() => {
8      resolve();
9    }, 3000);
10  });
11  console.log(10);
12}
13fn
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简述
  • async函数返回值
  • 深入理解await:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com