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函数实现过程:
-
通过async关键字,表明该函数体内部是异步操作
-
调用该函数,遇到await就去任务队列中执行异步操作,等到异步操作完成,在执行函数体后面的语句
-
返回Promise对象
-
任何await语句后面的Promise对象变为reject状态,那么整个async函数都会中断执行
回到顶部 目录
-
不需要像Generator去调用next()方法
-
async返回的总是Promise对象,可以用then方法进行下一步操作
-
async取代Generator函数的星号*,await取代Generator函数的yield
-
co模块约定,yield命令后面只能是 Thunk 函数或 Promise 对象,而async函数的await命令后面,可以是 Promise 对象和原始类型的值(数值、字符串和布尔值,但这时会自动转成立即 resolved 的 Promise 对象)
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
学习笔记
主要内容包括html,css,html5,css3,JavaScript,正则表达式,函数,BOM,DOM,jQuery,AJAX,vue等等
HTML/CSS
**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,数组,数组方法,二维数组,字符串