关于JavaScript异步编程学习顺序
前段时间辞职在家 抽空写了几篇关于 ES6 中 Promise、Generator、Async 的文章。写完之后 才发现原先并没有很好地理解“异步编程” 事后有点恍然大悟的意思。
个人认为要写好 JavaScript 异步编程 学习顺序如下
我们都知道 JavaScript 是单线程的 它通过事件循环 Event Loop 机制去实现非阻塞。这属于必须掌握的内容 包括同步任务、异步任务 微任务、宏任务 这是学习其他内容的前提。
在 ES6 之前 通常通过回调函数、事件监听等方式去处理异步操作。当 ES6 标准正式发布之后 提供了全新的 Promise 对象、Generator 函数。
Promise 对象干掉了“地狱回调” Callback Hell 但容易纵向发展 即一堆的 then()、catch() 处理。个人认为 Generator 才是使得 ES6 异步编程更强大的功臣。
但在 Generator 之前 应该先要了解 Iterator 迭代器。迭代器是一种机制 是一种接口。为各种不同的数据结构提供了统一的访问机制。迭代器不能完全算是“全新”的东西 只是在 ES6 中被写入标准 并为原有 如数组、字符串 、新增 如Set、Map 的数据结构实现了 Iterator 接口。其实我们很多常用方便的 ES6 语法都是利用迭代器 Iterator 接口实现的。例如 for...of、数组解构、扩展运算符、new Set()、Promise.all() 等等。
由于调用 Generator 函数 返回一个生成器对象 该对象本身就是一个可迭代对象 具有 Iterator 接口 也可以利用 for...of 等去遍历它。Generator 函数还是实现自定义迭代器的好方法。
而 Generator 函数的全新而独特的调用机制 才是它强大的原因 所以应该要学会它 并且要了解怎样写一个执行器去自动执行生成器对象。这个才是实际编程中最长用到的。
等你彻底了解 Generator 函数之后 Async 就是小菜一碟 它本质上就是 Generator Promise 自定义执行器的组合。
JavaScript 编程精解 中文第三版 十一、异步编程 计算机的核心部分称为处理器,它执行构成我们程序的各个步骤。 到目前为止,我们看到的程序都是让处理器忙碌,直到他们完成工作。 处理数字的循环之类的东西,几乎完全取决于处理器的速度。
JavaScript异步编程:Generator与Async 从Promise开始,JavaScript就在引入新功能,来帮助更简单的方法来处理异步编程,帮助我们远离回调地狱。Promise是下边要讲的Generator/yield与async/await的基础,希望你已经提前了解了它。
相关文章
- Chrome Development Tool: [VM] file from javascript
- 轻松学习JavaScript十四:JavaScript的RegExp对象(正則表達式)
- 【学习笔记24】JavaScript数组遍历方法习题
- 【学习笔记27】JavaScript字符串方法的练习
- 【学习笔记68】JavaScript的沙箱模式
- 谷哥的小弟学前端(10)——JavaScript基础知识(1)
- 跟着9张思维导图学习Javascript
- JavaScript 34. 代码规范
- JavaScript 12. 事件
- 12 个非常有用的 JavaScript 技巧
- 向量运算 与 JavaScript
- 【JavsScript】好用的高质量 JavaScript 库一览
- 《HTML5+JavaScript动画基础》——1.3 动态动画与静态动画
- 《JavaScript机器人编程指南》——导读
- JavaScript setTimeout用法,js setTimeout带参数
- JavaScript数据类型转换(String)
- javascript监听浏览器前进后退
- JavaScript DOM编程艺术学习笔记(一)
- JavaScript学习---EXT_JS实用开发指南
- JavaScript是如何工作的:事件循环和异步编程的崛起 + 5种使用 async/await 更好地编码方式!
- 通过示例学习JavaScript闭包
- 华为OD机试 - 第K个最小码值的字母(JavaScript) | 机试题+算法思路+考点+代码解析 【2023】
- javascript是什么?
- JavaScript学习第2天:JS内置对象、简单数据类型与复杂类型
- JavaScript学习笔记
- JavaScript面向对象编程
- JavaScript之面向对象学习四原型对象的动态性
- JavaScript高级程序设计学习笔记--错误处理与调试
- JavaScript高级程序设计学习笔记--基本概念