ES6 async函数,成为一名合格前端架构师

本文详细介绍了ES2017引入的async函数,它是Generator函数的语法糖,简化了异步操作。文章展示了async函数的写法,以及如何通过await关键字处理异步操作和Promise,还讨论了async函数与Generator函数的区别。此外,还提到了使用async函数读取文件的例子和其在JavaScript中的应用.
摘要由CSDN通过智能技术生成

ES2017 标准引入了 async 函数,使得异步操作变得更加方便

async函数是什么?一句话,它就是Generator函数的语法糖

async 函数写法

// 函数声明

async function foo() {};

// 函数表达式

const foo = async function () {};

// 对象的方法

let obj = { async foo() {} };

obj.foo().then(…)

// Class 的方法

class Storage {

constructor() {

this.cachePromise = caches.open(‘avatars’);

}

async getAvatar(name) {

const cache = await this.cachePromise;

return cache.match(/avatars/${name}.jpg);

}

}

const storage = new Storage();

storage.getAvatar(‘jake’).then(…);

// 箭头函数

const foo = async () => {};

回到顶部 目录

读取两个文件:

const fs = require(‘fs’);

const readFile = function (fileName) {

return new Promise(function (resolve, reject) {

fs.readFile(fileName, function (error, data) {

if (error) return reject(error);

resolve(data);

});

});

};

// Generator 函数写法

const gen = function* () {

const f1 = yield readFile(‘aa’);

const f2 = yield readFile(‘bb’);

console.log(f1.toString());

console.log(f2.toString());

};

// async 函数写法

const asyncFile = async function () {

const f1 = await readFile(‘aa’);

const f2 = await readFile(‘bb’);

console.log(f1.toString());

console.log(f2.toString());

};

分析async函数实现过程:

  1. 通过async关键字,表明该函数体内部是异步操作

  2. 调用该函数,遇到await就去任务队列中执行异步操作,等到异步操作完成,在执行函数体后面的语句

  3. 返回Promise对象

  4. 任何await语句后面的Promise对象变为reject状态,那么整个async函数都会中断执行

回到顶部 目录

async的特点


  1. 不需要像Generator去调用next()方法

  2. async返回的总是Promise对象,可以用then方法进行下一步操作

  3. async取代Generator函数的星号*,await取代Generator函数的yield

  4. co模块约定,yield命令后面只能是 Thunk 函数或 Promise 对象,而async函数的await命令后面,可以是 Promise 对象和原始类型的值(数值、字符串和布尔值,但这时会自动转成立即 resolved 的 Promise 对象)

使用注意点

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

学习笔记

主要内容包括html,css,html5,css3,JavaScript,正则表达式,函数,BOM,DOM,jQuery,AJAX,vue等等

HTML/CSS

CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

**HTML:**HTML基本结构,标签属性,事件属性,文本标签,多媒体标签,列表 / 表格 / 表单标签,其他语义化标签,网页结构,模块划分

**CSS:**CSS代码语法,CSS 放置位置,CSS的继承,选择器的种类/优先级,背景样式,字体样式,文本属性,基本样式,样式重置,盒模型样式,浮动float,定位position,浏览器默认样式

HTML5 /CSS3

**HTML5:**HTML5 的优势,HTML5 废弃元素,HTML5 新增元素,HTML5 表单相关元素和属性

**CSS3:**CSS3 新增选择器,CSS3 新增属性,新增变形动画属性,3D变形属性,CSS3 的过渡属性,CSS3 的动画属性,CSS3 新增多列属性,CSS3新增单位,弹性盒模型

JavaScript

**JavaScript:**JavaScript基础,JavaScript数据类型,算术运算,强制转换,赋值运算,关系运算,逻辑运算,三元运算,分支循环,switch,while,do-while,for,break,continue,数组,数组方法,二维数组,字符串

新增多列属性,CSS3新增单位,弹性盒模型

[外链图片转存中…(img-LOIIPaYK-1711737816363)]

JavaScript

**JavaScript:**JavaScript基础,JavaScript数据类型,算术运算,强制转换,赋值运算,关系运算,逻辑运算,三元运算,分支循环,switch,while,do-while,for,break,continue,数组,数组方法,二维数组,字符串

ES6中的async和await是用于处理异步操作的关键字。async关键字用于声明一个函数是异步的,而await关键字用于等待一个异步任务执行完成。 通过使用async和await,我们可以以同步的方式编写异步代码,使得代码更加清晰和易读。 使用async关键字声明的函数会返回一个Promise对象。在函数内部,我们可以使用await关键字来等待一个异步任务执行完成,而不需要使用回调函数或者Promise的then方法。当await关键字等待一个异步任务时,它会暂停函数的执行,并且等待异步任务完成后继续执行函数async和await的使用可以大大简化异步代码的编写,使得代码更易于理解和维护。它们是ES6中非常有用的特性,被广泛应用于JavaScript开发中。 引用: 目录 ES6async和await关键字1、初步了解2、async关键字3、await关键字4、深入讲解async和await。 :主要介绍了详解ES6async await 同步/异步方案,本文以最简明的方式来疏通 async await,有兴趣的可以了解下。 :我们先从字面意思来理解这两个关键字,asyncasynchronous(异步)的简写,而await可以认为是async wait的简写。所以async可以理解为用于声明一个函数是异步的,而await用于等待一个异步任务执行完成。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [详解ES6async和await关键字](https://blog.csdn.net/ldjgood/article/details/123696983)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [详解ES6async+await 同步/异步方案](https://download.csdn.net/download/weixin_38746166/12772472)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值