nodejs批量導入數據eventproxy(回調函數嵌套解決方案)使用實例

回調函數嵌套解決方案——eventProxygit

API地址:https://github.com/JacksonTian/eventproxygithub

一、安裝eventproxyajax

執行npm install eventProxy.npm

二、使用前進行聲明,代碼以下:數組

var EP = require('eventproxy');

三、根據API進行相應的方法調用,代碼以下:cookie

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還提供了衆多方法,讓代碼變得更加簡單明瞭,閱讀性也大大提升。函數

並行例子,代碼以下:post

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);
});

循環型調用例子。代碼以下:ui

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,若有不足之處,敬請原諒。

相關文章
相關標籤/搜索