当前位置:首页 > 技术分析 > 正文内容

js异步编程之async/await详解_js异步实现原理

ruisui883个月前 (02-14)技术分析15

async 和 await 是 ES6 引入的关键字,用于异步编程。

  • async 用于声明一个函数为异步函数,异步函数的返回值会被隐式地Promise.resolve()包装。这样 asyn函数就会返回一个Promise对象,可以像其他Promise对象一样使用.then()和.catch()。
  • await 只能在async函数内部使用,且只能等Promise对象的结果。遇到await,异步函数会暂停执行,等待Promise的结果,再恢复异步函数的执行并返回解析值。如果Promise变为reject状态,会抛出异常,需要通过catch捕获处理。

async和await的区别:

  • async用于定义一个函数,表示其内部有异步操作。async函数返回的永远是一个Promise对象。
  • await用于等待一个Promise对象的resolve,并获取resolve的值。await必须在async函数内部使用,而async函数返回的总是一个Promise对象

示例代码:

async function test() {
  console.log('test start')
  let value = await Promise.resolve('await value')
  console.log(value)
  console.log('test end')
}

console.log('1')
test()
console.log('2')

输出结果:

1
test start
2
await value
test end

执行时序图:

从执行结果和执行时序图可以看出,程序是按顺序执行的,但是在执行test函数时,await会等待Promise.resolve异步执行完成后返回结果再继续执行test函数后面的语句。

总结

async 和 await 让异步代码看起来像同步代码,大大提高了异步编程的可读性和开发体验。async 定义异步函数,await 在异步函数中等待异步操作的完成。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/1965.html

标签: aysnc
分享给朋友:

“js异步编程之async/await详解_js异步实现原理” 的相关文章

智慧校园平台解决方案-收费管理系统

收费管理系统简介:学生收费管理系统与教务系统,学工系统实现数据互通;实现网站支付功能,实现学生在家,在宿舍,只要能够上网即可通过支付宝,微信,网银对产生的订单进行支付。服务网大厅中的web网上查询使得数据查询更加便利,财务负责人通过平台查看学生收费情况,院系老师通过查询平台查询本院系实时收费情况等,...

适合旧电脑2022年值得推荐的 10 款轻量级 Linux 发行版

推荐 10 款轻量级Linux 发行版,它们是 2022 年的轻量级、对旧硬件友好的 Linux 发行版。1、Linux LiteLinux Lite 是一款基于#ubuntu# 和 Debian 的、正在不断开发和完善的 Linux 发行版,极好看的 Xfce 桌面,并基于 Ubuntu,采用了...

首个支持苹果 M1 Mac 的 Linux 发行版发布,面向用户开放下载

IT之家 3 月 20 日消息,Asahi Linux 是研究 Linux for Apple Silicon macs 的组织群体,3 月 18 日,Asahi Linux 宣布成功在 M1 MacBook Air 笔记本电脑上运行,并开放了 Asahi Linux 的下载安装。Asahi Lin...

面试官:聊聊你知道的Vue与React的区别

最近面到很多大公司的时候,小编都会碰到一个很尴尬的问题,很多大公司的技术栈都是React,但是小编学的是Vue,其实从本质上来说两者都是比较优秀的前端框架,所以有些面试官会问到Vue和React的区别。小编认真整理了一些自己所知道的Vue和React的区别,给大家分享分享。1. 模板语法 vs JS...

「云原生」Containerd ctr,crictl 和 nerdctl 命令介绍与实战操作

一、概述作为接替Docker运行时的Containerd在早在Kubernetes1.7时就能直接与Kubelet集成使用,只是大部分时候我们因熟悉Docker,在部署集群时采用了默认的dockershim。在V1.24起的版本的kubelet就彻底移除了dockershim,改为默认使用Conta...

K8S NFS 共享存储

NFS 共享存储前面我们学习了 hostPath 与 Local PV 两种本地存储方式,但是平时我们的应用更多的是无状态服务,可能会同时发布在不同的节点上,这个时候本地存储就不适用了,往往就需要使用到共享存储了,比如最简单常用的网络共享存储 NFS,本节课我们就来介绍下如何在 Kubernetes...