说说 JavaScript 中的 async 和 await

ES7 引入了 async/await,这是 JavaScript 异步编程的一个比较大的改进。我们可以像写同步代码一些编写异步代码,避免了回调地狱,同时也代码也比 Promise 更易于阅读。async 和 await 也是面试经常被问到的东西,之前一直只限于会用,并不太理解内部的实现原理。今天就来好好探究探究,JavaScript 中的 async 和 await 到底是怎么工作的。asy...
摘要由CSDN通过智能技术生成

ES7 引入了 async/await,这是 JavaScript 异步编程的一个比较大的改进。我们可以像写同步代码一些编写异步代码,避免了回调地狱,同时也代码也比 Promise 更易于阅读。

async 和 await 也是面试经常被问到的东西,之前一直只限于会用,并不太理解内部的实现原理。今天就来好好探究探究,JavaScript 中的 async 和 await 到底是怎么工作的。

async

async 就是异步的意思,在函数的定义前加上 async 关键字,表示这是一个异步函数,意味着该函数的执行不会阻塞后面代码的执行。

先来看一个简单的例子:

async function hello() {
   
  console.log('hello');
}

hello();
console.log('world');

可以猜猜这段代码的输出顺序是什么?

输出的顺序如下:

hello
world

你可能要跳出来骂我了,前面不是说不会阻塞后面代码的执行么,为什么还是按顺序输出的?

先别急着骂,容我再进一步解释。

我们先一起来看看 hello 函数的返回值是什么。

async function hello() {
   
  console.log('hello');
  return 'hello';
}

console.log(hello());

console.log('world');

上面的代码输出如下:

hello
Promise {
   <resolve
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值