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

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

ruisui884个月前 (02-14)技术分析22

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异步实现原理” 的相关文章

【幼儿园收费管理系统】——中小型幼儿园收费管理的好帮手!

为了让幼儿园收费管理更加高效、便捷,我们推出了《幼儿园收费管理系统》!这款软件专为中小型幼儿园设计,集基础信息、幼儿管理、收费管理、车辆管理、生日提醒、报表统计等功能于一身,是您管理幼儿园的得力助手!一、基础设置:一款好的软件,首先要让您轻松上手。我们的系统提供了幼儿园信息、年级设置、班级设置、餐...

微软的Linux发行版终于加入了对XFS根文件系统的支持

当许多Linux发行版在评估新的根文件系统选项或甚至像OpenZFS这样的特性,微软内部Linux发行版到本月才开始支持XFS作为根文件系统选项。随着这个月对微软内部Linux发行版CBL-Mariner的更新,他们现在支持XFS作为根文件系统。到目前为止,这个用于微软内部各种目的的Linux发行版...

身体越柔软越好?刻苦拉伸可能反而不健康 | 果断练

坐下伸直膝盖,双手用力向前伸,再用力……比昨天前进了一厘米,又进步了! 这么努力地拉伸,每个人都有自己的目标,也许是身体健康、线条柔美、放松肌肉、体测满分,也可能为了随时劈个叉,享受一片惊呼。 不过,身体柔软,可以享受到灵活的福利,也可能付出不稳定的代价,并不是越刻苦拉伸越好。太硬或者太软,都不安全...

2024年,不断突破的一年

迈凯伦F1车队不久前拿下了2024年度总冠军,距离上一次还是二十几年前。在此期间,另一领域内,一个充满革新活力的腕表品牌——RICHARD MILLE理查米尔,正不断发展,与F1运动、帆船、古董车展等领域,共享着对速度与极限的无尽向往。RICHARD MILLE的发展与F1车手们在赛道上的卓越表现交...

虚幻引擎5.5发布

IT之家 11 月 13 日消息,虚幻引擎 5.5 现已发布。据介绍,新版本虚幻引擎在动画创作、虚拟制作和移动游戏开发方面取得进步;渲染、摄像机内视觉特效和开发人员迭代等领域的部分功能已可用于生产。IT之家整理部分功能亮点如下:动画Sequencer增强虚幻引擎的非线性动画编辑器 Sequencer...

USB电池充电基础:应急指南

USB为便携设备供电与其串行通信功能一样,已经成为一种标准应用。如今,USB 供电已经扩展到电池充电、交流适配器及其它供电形式的应用。应用的普及带来的一个显著效果是便携设备的充电和供电可以互换插头和适配器。因此,相对于过去每种装置都采用专用适配器的架构相比,目前的解决方案允许采用多种电源进行充电。毋...