eventProxy

1.功能

解决javascript回调地狱

fs.readFile(‘./file1.txt‘, ‘utf8‘, function(err, content1){
	fs.readFile(‘./file2.txt‘, ‘utf8‘, function(err, content2){
		fs.readFile(‘./file3.txt‘, ‘utf8‘, function(err, content3){
			console.log(content1+content2+content3)
		});
	});
})

安装eventProxy 

npm install eventproxy

2.常用方法

①解决回调方法

emit:触发事件

after

all:告诉它你要监听哪些事件,并给它一个回调函数。ep.all(‘event1‘, ‘event2‘, function (result1, result2) {})。

var fs = require(‘fs‘);
var EventProxy = require(‘eventProxy‘);
var ep = new EventProxy();

ep.all([‘read_file1‘, ‘read_file2‘, ‘read_file3‘], function(content1, content2, content3){
	console.log(content1+content2+content3)
});
ep.after(‘read_file‘, 3, function(contents){
	console.log(contents.join());
});

fs.readFile(‘./file1.txt‘, ‘utf8‘, function(err, content1){
	ep.emit(‘read_file‘, content1+‘ooxx‘);
})
fs.readFile(‘./file2.txt‘, ‘utf8‘, function(err, content2){
	ep.emit(‘read_file‘, content2);
})
fs.readFile(‘./file3.txt‘, ‘utf8‘, function(err, content3){
	ep.emit(‘read_file‘, content3);
})

  

②优化代码的方法

down

throw

fail

ep.fail(function(err){
	console.log(‘this is fail function‘);
	console.log(err);
});

fs.readFile(‘./file4.txt‘, ‘utf8‘, function(err, content){
	if(err){
		ep.throw(err);
		//ep.emit(‘error‘, err);
	}
})

  

时间: 2024-10-07 05:30:34

eventProxy的相关文章

promise与aysnc 与EventProxy

promise 已经是 es6推荐的内置的东西了,所以我们需要清楚. promise的使用类似与jquery的链式操作,.then()  .then()中不断使用.回调看上去清晰明了,建议使用. async 有人说比promise速度快一些,但是书写太难理解了,所以在这个硬件狂奔的时候,async的这点代码的理解和速度的性价比实在太低了,不考虑. eventproxy 网上的评论一直,没用过,不太好用,难理解. cnode club貌似是用的 eventproxy. 其中有源码这样写的: var

EventProxy流程控制

EventProxy是一个通过控制事件触发顺序来控制业务流程的工具. 1. 利用事件机制解耦复杂业务逻辑 2. 移除被广为诟病的深度callback嵌套问题 3. 将串行等待变成并行等待,提升多异步协作场景下的执行效率 4. 友好的Error handling node.js的亮点是回调函数,node.js流程控制.传参都是通过回调函数来实现的.开发中经常会遇到回调嵌套的场景,尤其是在业务复杂的场景下,会嵌套n层回调函数,这样做的原因是为了控制代码执行的流程. 下面是一个需要同步读取文件的例子

nodejs批量导入数据eventproxy(回调函数嵌套解决方案)使用实例

回调函数嵌套解决方案——eventProxy API地址:https://github.com/JacksonTian/eventproxy 1.安装eventproxy 执行npm install eventProxy. 2.使用前进行声明,代码如下: var EP = require('eventproxy'); 3.根据API进行相应的方法调用,代码如下: ajax.post('/user/login', { name: '********', pwd: '******', remembe

npm publish 发布

<h3 class="catListTitle">一.npm包结构(编写)</h3> npm包实际是一个存档文件,即一个目录直接打包为.zip或tar.gz格式的文件,安装后解压还原为目录.完全符合CommonJS规范的包目录应该包含如下这些文件. package.json : 包描述文件. bin: 用于存放可执行二进制文件的目录. lib:用于存放javascript代码的目录. doc:用于存放文档的目录. test: 用于存放单元测试用例的代码. 我们开

JS读书笔记:《JavaScript框架设计》——第12章 异步处理

一.何为异步   执行任务的过程可以被分为发起和执行两个部分. 同步执行模式:任务发起后必须等待直到任务执行完成并返回结果后,才会执行下一个任务. 异步执行模式:任务发起后不等待任务执行完成,而是马上执行下一个任务,当任务执行完成时则会收到通知. 面对IO操作频繁的场景,异步执行模式可在同等的硬件资源条件下提供更大的并发处理能力,也就是更大的吞吐量. 但由于异步执行模式打破人们固有的思维方式,并且任务的发起和任务的执行是分离的,从而提高编程的复杂度. 多线程.多进程均可实现异步模式. 二.从回调

Node.js入门:前后端模块的异同

通常有一些模块可以同时适用于前后端,但是在浏览器端通过script标签的载入JavaScript文件的方式与Node.js不同.Node.js在载入到最终的执行中,进行了包装,使得每个文件中的变量天然的形成在一个闭包之中,不会污染全局变量.而浏览器端则通常是裸露的JavaScript代码片段.所以为了解决前后端一致性的问题,类库开发者需要将类库代码包装在一个闭包内.以下代码片段抽取自著名类库underscore的定义方式. 1 (function () { 2 // Establish the

Node.js入门:事件机制

Evented I/O for V8 JavaScript 基于V8引擎实现的事件驱动IO. 事件机制的实现 Node.js中大部分的模块,都继承自Event模块(http://nodejs.org/docs/latest/api/events.html ).Event模块(events.EventEmitter)是一个简单的事件监听器模式的实现.具有addListener/on,once,removeListener,removeAllListeners,emit等基本的事件监听模式的方法实现

【React源码分析】组件通信、refs、key和ReactDOM

React源码系列文章,请多支持:React源码分析1 - 组件和对象的创建(createClass,createElement)React源码分析2 - React组件插入DOM流程React源码分析3 - React生命周期详解React源码分析4 - setState机制React源码分析5 -- 组件通信,refs,key,ReactDOMReact源码分析6 - React合成事件系统 1 组件间通信 父组件向子组件通信 React规定了明确的单向数据流,利用props将数据从父组件传

Python:线程、进程与协程(5)——multiprocessing模块(2)

上篇博文介绍了Python的multiprocessing模块创建进程Process 类,进程间通信,进程间的同步三个部分,下面接着介绍学习进程共享. (1)内存共享 在多进程情况下,由于每个进程有自己独立的内存空间,怎样能实现内存共享呢?multiprocessing模块提供了Value, Array,这两个是函数,详细定义在sharedctypes.py里,有兴趣的可以去看看(等了解了ctypes模块后回头再分享下我的理解,今天就先放放)   Value Value的初始化非常简单,直接类似