• 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: '******',
                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,如有不足之处,敬请原谅。

  • 相关阅读:
    JS学习笔记11_高级技巧
    【应用】wamp3.x.x设置,让外网能够访问本服务器
    数据建模(二)
    数据建模浅析(一)
    saltstack(四) saltstack的targeting、分组
    saltstack(三) grains、pillar的使用
    saltstack(二) master、minion常用配置选项
    dstat系统分析工具的使用
    PC蓝牙通信C#代码实现
    开源GIS-对比GeoServer和MapServer
  • 原文地址:https://www.cnblogs.com/diaosizhang/p/4096630.html
Copyright © 2020-2023  润新知