FED

©FrontEndDev.org
2015 - 2024
web@2.23.0 api@2.21.1
异步编程之co:源码分析
访问
1364
·
评论
0
大家如果能消化掉前面的知识,相信这一章的分析也肯定是轻轻松松的。我们这一章就来说说,我们之前一直高调提到的co库。co库,它用Generator和Promise相结合,完美提升了我们异步编程的体验。我们首先看看如何使用co的,我们仍旧以之前的读取Json文件的例子看看:大家看上面的代码,甚至是可以使用同步的思维,不用去理会回调什么鬼的。我们readFile()得到filename,然后再次readFile()得到json,解析完json后输出就结束了,非常清爽。大家如果不相信的话,可以使用原生的异步api尝试一下,fs.readFile()像上面相互有依赖的,绝对恶心!...
异步编程之Generator(2):剖析特性
访问
1107
·
评论
0
继上一篇见识过其配合promise带来的超爽的异步编程体验,我想应该大部分同学都会想好好看一下,到底这个Generator是什么?接下来我们会对Generator的特性进行剖析,让我们对接下来学习co源码打个扎实的基础。我们首先得知道,Generator一开始并不是用来做异步编程的,是后来的大牛们挖掘了它的特性,让它在异步编程里大放异彩。其实Generator是生成遍历器的构造器,ES6定义了一个遍历器的接口Iterator。任何数据结构满足Iterator接口,都可以统一实现遍历操作。一步一步的调用next()或者for..of循环都可以遍历实现Iterator接口的数据结构。...
异步编程之Generator(1):领略魅力
访问
1176
·
评论
0
回顾一下我们之前学习的promise。我们巧妙利用了promise/deferred模式,用链式结构代替了嵌套回调的结构,大大缓解了回调地狱。我们再来看看之前我们举的那个异步串行队列的例子吧!假设我们有一个hello.txt,里面存了一个JSON文件的文件名,我们需要得到JSON文件的message属性的值。步骤如下:这个例子我们之前也是举过非常多次的,我们尝试使用Promise链式结构完成:...
异步编程之Promise(3):拓展进阶
访问
901
·
评论
0
在前面的文章中,通过了解promise能做什么,实践动手从原理上了解promise/deferred模式的用法,相信大家应该更期待这次的功能拓展。我们不仅需要让单异步操作promise化,我们还需要从实际出发,拓展更多有用的功能。直接看一下我们这一次需要做的两个功能:这两个功能用我们之前自己写的简陋promise库,是无法做到的。我们不能在指定多个promise异步完成后,再触发回调。也不能让多个promise异步像排队一样,一个一个的进行,甚至下一个promise的参数是依赖上一个promise的。这就是我们接下来需要解决的问题:...
异步编程之Promise(2):探究原理
访问
1169
·
评论
0
在异步编程之Promise(1)里,我是翻译了一篇文章,里面是探究promise的模式和领略它的魅力。我们可以利用promise,缓解回调函数给我们带来的回调金字塔。使用链式结构书写,使代码更加简洁易懂,易于控制。但是对于构造promise和其内部的实现,却用草草的一句newPromise()就带过。这一次,借着阅读朴灵大神的《深入浅出Node.Js》,我们自己动手实现一个小小的基本的promise吧。...
异步编程之Promise(1):初见魅力
访问
1191
·
评论
0
思考一下,下面这段用来读取文件并解析JSON的Javascript同步代码。它很简单并且易于阅读,但是因为它会阻塞代码,你并不会想用在大多数的应用里。这意味着,当你用它来读取文件的时候(它需要很多时间)不会有其他的事情发生。为了让我们的应用高性能且实时响应,我们需要让所有涉及到IO的操作都变成异步的。最简单的方法去实现它就是使用callback回调。然而,一个幼稚不成熟的代码实现也许会让它出错。...