如何用ES7中的Async和Await进行异步编程
发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,这篇文章给大家介绍如何用ES7中的Async和Await进行异步编程,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Async/Await基本规则async 表示这是一个async
千家信息网最后更新 2025年11月14日如何用ES7中的Async和Await进行异步编程
这篇文章给大家介绍如何用ES7中的Async和Await进行异步编程,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
Async/Await基本规则
async 表示这是一个async函数,await只能用在这个函数里面。
await 表示在这里等待promise返回结果了,再继续执行。
await 后面跟着的应该是一个promise对象(当然,其他返回值也没关系,只是会立即执行,不过那样就没有意义了…)
一个Async/Await例子
Async/Await应该是目前最简单的异步方案了,首先来看个例子。
这里我们要实现一个暂停功能,输入N毫秒,则停顿N毫秒后才继续往下执行。
var sleep = function (time) { return new Promise(function (resolve, reject) { setTimeout(function () { resolve(); }, time); })};var start = async function () { // 在这里使用起来就像同步代码那样直观 console.log('start'); await sleep(3000); console.log('end');};start();控制台先输出start,稍等3秒后,输出了end。
获得返回值
await等待的虽然是promise对象,但不必写.then(..),直接可以得到返回值。
var sleep = function (time) { return new Promise(function (resolve, reject) { setTimeout(function () { // 返回 'ok' resolve('ok'); }, time); })};var start = async function () { let result = await sleep(3000); console.log(result); // 收到 'ok'};捕捉错误
既然.then(..)不用写了,那么.catch(..)也不用写,可以直接用标准的try catch语法捕捉错误。
var sleep = function (time) { return new Promise(function (resolve, reject) { setTimeout(function () { // 模拟出错了,返回 'error' reject('error'); }, time); })};var start = async function () { try { console.log('start'); await sleep(3000); // 这里得到了一个返回错误 // 所以以下代码不会被执行了 console.log('end'); } catch (err) { console.log(err); // 这里捕捉到错误 `error` }};循环多个await
await看起来就像是同步代码,所以可以理所当然的写在for循环里,不必担心以往需要闭包才能解决的问题。
..省略以上代码var start = async function () { for (var i = 1; i <= 10; i++) { console.log(`当前是第${i}次等待..`); await sleep(1000); }};值得注意的是,await必须在async函数的上下文中的。
..省略以上代码let 一到十 = [1,2,3,4,5,6,7,8,9,10];// 错误示范一到十.forEach(function (v) { console.log(`当前是第${v}次等待..`); await sleep(1000); // 错误!! await只能在async函数中运行});// 正确示范for(var v of 一到十) { console.log(`当前是第${v}次等待..`); await sleep(1000); // 正确, for循环的上下文还在async函数中}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
关于如何用ES7中的Async和Await进行异步编程就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
错误
代码
函数
内容
帮助
循环
编程
上下
上下文
不用
例子
对象
更多
同步
示范
输出
不错
直观
理所当然
没关系
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
服务器跑代码断网
抖音精控软件开发
泵类设备维修数据库
csgo天津服务器ip
云服务器转发 速度
医院的是什么数据库
部队如何正确看待网络安全用网
克而瑞数据库和中指数据库
一二年级网络安全手抄报图片大全
oracle数据库知识点
24小时在线的我的世界服务器
杭州学习软件开发哪家值得信赖
网络技术工程师求职信怎么写
iphone 网页服务器
工业软件开发用什么语言和软件
苹果手机数据库错误
天骑我的世界服务器
新致软件开发
如何批量将数据库导入GIS
广州正规软件开发价位
王者荣耀手q服务器
定州卓卓网络技术
计算机网络技术必要知识
反恐网络安全测试报告
计算机网络技术是几级学科
网络技术收入
数据库加字段
iscsi目标服务器无法加载
switch连国外服务器
城口软件开发公司