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

时间:2024-01-11 18:18:50

回调函数嵌套解决方案——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: '******',
rememberPwd: true
}, function (resp, headers) {
if (resp.success) {
console.log("begin import");
ajax.header.cookie = headers['set-cookie'];
var baseImports = [importDict];
var ep = new EP();
ep.after('importBase', baseImports.length, function () {
importShop();
console.log("import finish");
});
$.each(baseImports, function (fn) {
fn(ep);
}); }
else {
console.log('login fail');
}
});

根据API中说明,ep.after实现在each中的方法执行完成后,再进行importShop的执行,实现异步回调功能,避免了多层嵌套。

除了after外,eventProxy还提供了众多方法,让代码变得更加简单明了,阅读性也大大提高。

并行例子,代码如下:

var ep = EventProxy.create("template", "data", "l10n", function (template, data, l10n) {
_.template(template, data, l10n);
}); $.get("template", function (template) {
// something
ep.emit("template", template);
});
$.get("data", function (data) {
// something
ep.emit("data", data);
});
$.get("l10n", function (l10n) {
// something
ep.emit("l10n", l10n);
});

循环型调用例子。代码如下:

var ep = new EventProxy();
ep.after('got_file', files.length, function (list) {
// 在所有文件的异步执行结束后将被执行
// 所有文件的内容都存在list数组中
});
for (var i = 0; i < files.length; i++) {
fs.readFile(files[i], 'utf-8', function (err, content) {
// 触发结果事件
ep.emit('got_file', content);
});
}

本文根据eventProxy根据eventProxy的API进行编写,相应例子来自API,如有不足之处,敬请原谅。