我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Javascript中的async函数详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Javascript中的async函数详解

前言:async 是“异步”的简写,async 用于申明一个 function 是异步的,而 await 用于等待一个异步方法执行完成,await 只能出现在 async 函数中。

Generator 函数:

var fs = require('fs');
var readFile = function (fileName){
 return new Promise(function (resolve, reject){
 fs.readFile(fileName, function(error, data){
 if (error) reject(error);
 resolve(data);
 });
 });
};
var gen = function* (){
  var f1 = yield readFile('/etc/fstab');
  var f2 = yield readFile('/etc/shells');
  console.log(f1.toString());
  console.log(f2.toString());
}

async 函数

var asyncReadFile = async function (){
  var f1 = await readFile('/etc/fstab');
  var f2 = await readFile('/etc/shells');
  console.log(f1.toString());
  console.log(f2.toString());
};

显而易见,async函数中async就是将 Generator 函数的星号(*)替换成 async,await等价于yield。

async 函数是非常新的语法功能,属于 ES7。目前,它仍处于提案阶段,但是转码器 Babel 和 regenerator 都已经支持,转码后就能使用。

但async 函数对 Generator 函数做了改进:

1、内置执行器:Generator函数的执行必须靠执行器,所以才有了 co 函数库,而 async 函数自带执行器.也就是说,async 函数的执行,与普通函数一模一样。

var result = asyncReadFile();

2、更好的语义:async 和 await,比起星号和 yield,语义更清楚了。async 表示函数里有异步操作,await 表示紧跟在后面的表达式需要等待结果。

3、更广的适用性:co 函数库约定,yield 命令后面只能是 Thunk 函数或 Promise 对象,而 async 函数的 await 命令后面,可以跟 Promise 对象和原始类型的值(数值、字符串和布尔值,但这时等同于同步操作)。

async 的作用

async 函数负责返回一个 Promise 对象,如果在async函数中 return 一个直接量,async 会把这个直接量通过Promise.resolve()  封装成 Promise 对象;如果 async 函数没有返回值,它会返回 Promise.resolve(undefined)。

await 在等待什么

如果await等到的不是一个promise对象,那跟着的表达式的运算结果就是它等到的东西;

如果是一个promise对象,await会阻塞后面的代码,等promise对象resolve,得到resolve的值作为await表达式的运算结果。

虽然await阻塞了,但await在async中,async不会阻塞,它内部所有的阻塞都被封装在一个promise对象中异步执行。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!    

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Javascript中的async函数详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

JavaScript异步编程中async函数详解

async函数是使用async关键字声明的函数。async函数是AsyncFunction构造函数的实例,并且其中允许使用await关键字。async和await关键字让我们可以用一种更简洁的方式写出基于Promise的异步行为,而无需刻意地链式调用promise
2022-11-13

深入探讨JavaScript中的async函数

async函数的返回值为 promise 对象,promise对象的结果由async函数执行的返回值决定。async函数能使得异步操作变得更加方便,简而言之就是 Generator 的语法糖。
2022-11-22

JavaScript中的async函数怎么使用

本篇内容主要讲解“JavaScript中的async函数怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript中的async函数怎么使用”吧!async函数async函数的返
2023-07-04

详解JavaScript中的replace()函数

JavaScript中的replace()函数是用于替换字符串中的某个子串的方法。该方法接受两个参数:要替换的子串和替换后的字符串。语法:string.replace(searchValue, replaceValue)参数说明:- sea
2023-09-09

JavaScript 中的 parseInt() 函数详解

parseInt函数将其第一个参数转换为一个字符串,对该字符串进行解析,然后返回一个整数或 NaN,这篇文章主要介绍了JavaScript 的 parseInt() 函数,需要的朋友可以参考下
2023-05-19

如何在Node.js中使用async函数的方法详解

这篇文章主要为大家介绍了如何在Node.js中使用async函数的方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-12-19

JavaScript中的回调函数详细解析

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了回调函数的相关内容,包括了什么是回调函数、回调函数有哪些特点、回调函数中this指向问题,下面一起来看一下,希望对大家有帮助。
2022-11-23

详解JavaScript中的箭头函数的使用

这篇文章主要是带大家一起了解一下所有有关JavaScript箭头函数的信息。文中通过示例讲解了如何使用ES6的箭头语法,以及在代码中使用箭头函数时需要注意的一些常见错误,需要的可以参考一下
2022-11-13

详解JavaScript中的before-after-hook钩子函数

最近看别人的代码,接触到一个插件,before-after-hook,百度搜一圈也没有看到什么地方有教程,本文就来简单介绍一下这个插件的使用方法,需要的可以参考一下
2022-12-15

编程热搜

目录