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

时间: 2024-11-05 11:38:34

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

js执行顺序/Promise优雅解决回调函数嵌套

先执行同步 然后把settimeout(function xx(){}放进堆栈 然后执行回调 function xx() /** * Created by Administrator on 2016/10/28. */ // nodejs 封装操作文件的功能 fs var fs = require('fs'); //同步读取 // var str = '' // str += fs.readFileSync('./data/01','utf-8'); // str += fs.readFileS

不使用回调函数的ajax请求实现(async和await简化回调函数嵌套)

在常规的服务器端程序设计中, 比如说爬虫程序, 发送http请求的过程会使整个执行过程阻塞,直到http请求响应完成代码才会继续执行, 以php为例子 $url = "http://www.google.com.hk"; $result = file_get_contents($url); echo $result; 当代码执行到第二行时,程序便陷入了等待,直到请求完成,程序才会继续往下跑将抓取到的html输出.这种做法的好处是代码简洁明了,运行流程清晰, 容易维护. 缺点就是程序的运

JavaScript ES7 中使用 async/await 解决回调函数嵌套问题

原文链接:http://aisk.me/using-async-await-to-avoid-callback-hell/ JavaScript 中最蛋疼的事情莫过于回调函数嵌套问题.以往在浏览器中,因为与服务器通讯是一种比较昂贵的操作,因此比较复杂的业务逻辑往往都放在服务器端,前端 JavaScript 只需要少数几次 AJAX 请求就可拿到全部数据. 但是到了 webapp 风行的时代,前端业务逻辑越来越复杂,往往几个 AJAX 请求之间互有依赖,有些请求依赖前面请求的数据,有些请求需要并行

Dynamics 2015 数据管理 之 如何批量导入数据到 正式区(一)

单一个项目的数据导入可以在具体功能 中导入,大体位置如下. 如果项目新上线的话,要批量导入数据的话,就要到如下的功能中实现了. 进入方式: 在 设置 ---- 数据管理 下载 下载后,用EXCEL打开, 给业务人员批量输入数据. 编辑好以后,上传吧,点 导入. 下一步即可以,导入以后,可以返回看看数据导入的情况,格式有没有错误等.

django 批量导入数据

一.需求 我在数据库中建了一张表,用来保存ucloud云上的project id 和project name models.py代码如下 #coding:utf-8 from django.db import models class Project(models.Model):     name = models.CharField(u'项目名称',max_length=32,blank=True)     id = models.CharField(u'项目ID',max_length=32

利用OLEDB+SqlClient实现EXCEL批量导入数据

以下是几个自己写的类 /// <summary> /// 取得Excel对象 /// </summary> /// <param name="strConn">OLEDB连接字符串</param> /// <param name="sql">SQL语句</param> /// <returns></returns> public static DataTable GetE

在EasyUI中统一判断是否有选中行,如果有则将选中行数据传入回调函数

function procossWithSeletedData(func) { var rowData = $("#tbGrid").datagrid("getSelected"); if (rowData) { func(rowData); //调用回调函数 并传入 选中行数据 } else { $.msgBoxObj.showMsgErr("没有选中行..........!");//提示信息 } } 在EasyUI中统一判断是否有选中行,如果

asp.net线程批量导入数据时通过ajax获取执行状态

最近因为工作中遇到一个需求,需要做了一个批量导入功能,但长时间运行没个反馈状态,很容易让人看了心急,产生各种臆想!为了解决心里障碍,写了这么个功能. 通过线程执行导入,并把正在执行的状态存入session,既共享执行状态,通过ajax调用session里的执行状态,从而实现反馈导入状态的功能! 上代码: 前端页面 <!DOCTYPE html> <html lang="en"> <head>  <meta charset="UTF-8

redis pipe 批量导入数据

redis pipe 批量导入数据 速度非常快, 文本需要支持redis的协议, 使用Python生成文件 代码如下 delimiter = "\r\n" data = "*3" + delimiter + "$3" + delimiter + "set" + delimiter + "$" + str(len(row[0])) + delimiter + row[0] + delimiter + &quo