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,如有不足之处,敬请原谅。
nodejs批量导入数据eventproxy(回调函数嵌套解决方案)使用实例的更多相关文章
- JavaScript ES7 中使用 async/await 解决回调函数嵌套问题
原文链接:http://aisk.me/using-async-await-to-avoid-callback-hell/ JavaScript 中最蛋疼的事情莫过于回调函数嵌套问题.以往在浏览器中, ...
- 不使用回调函数的ajax请求实现(async和await简化回调函数嵌套)
在常规的服务器端程序设计中, 比如说爬虫程序, 发送http请求的过程会使整个执行过程阻塞,直到http请求响应完成代码才会继续执行, 以php为例子 $url = "http://www. ...
- csv文件批量导入数据到sqlite。
csv文件批量导入数据到sqlite. 代码: f = web.input(bs_switch = {}) # bs_switch 为from表单file字段的namedata =[i.split( ...
- 使用python向Redis批量导入数据
1.使用pipeline进行批量导入数据.包含先使用rpush插入数据,然后使用expire改动过期时间 class Redis_Handler(Handler): def connect(self) ...
- Cassandra使用pycassa批量导入数据
本周接手了一个Cassandra系统的维护工作,有一项是需要将应用方的数据导入我们维护的Cassandra集群,并且为应用方提供HTTP的方式访问服务.这是我第一次接触KV系统,原来只是走马观花似的看 ...
- Redis批量导入数据的方法
有时候,我们需要给redis库中插入大量的数据,如做性能测试前的准备数据.遇到这种情况时,偶尔可能也会懵逼一下,这里就给大家介绍一个批量导入数据的方法. 先准备一个redis protocol的文件( ...
- 项目总结04:SQL批量导入数据:将具有多表关联的Excel数据,通过sql语句脚本的形式,导入到数据库
将具有多表关联的Excel数据,通过sql语句脚本的形式,导入到数据库 写在前面:本文用的语言是java:数据库是MySql: 需求:在实际项目中,经常会被客户要求,做批量导入数据:一般的简单的单表数 ...
- 批量导入数据到mssql数据库的
概述 批量导入数据到数据库中,我们有好几种方式. 从一个数据表里生成数据脚本,到另一个数据库里执行脚本 从EXCEL里导入数据 上面两种方式,导入的数据都会生成大量的日志.如果批量导入5W条数据到数据 ...
- asp.net线程批量导入数据时通过ajax获取执行状态
最近因为工作中遇到一个需求,需要做了一个批量导入功能,但长时间运行没个反馈状态,很容易让人看了心急,产生各种臆想!为了解决心里障碍,写了这么个功能. 通过线程执行导入,并把正在执行的状态存入sessi ...
随机推荐
- 用感知机(Perceptron)实现逻辑AND功能的Python3代码
之所以写这篇随笔,是因为参考文章(见文尾)中的的代码是Python2的,放到Python3上无法运行,我花了些时间debug,并记录了调试经过. 参考文章中的代码主要有两处不兼容Python3,一个是 ...
- 最实用的Android开发学习路线分享
Android开发学习路线分享.Android发展主导移动互联发展进程,在热门行业来说,Android开发堪称火爆,但是,虽然Android有着自身种种优势,但对开发者的专业性要求也是极高,这种要求随 ...
- Unhandled event loop exception No more handles
1.错误描述 2.错误原因 3.解决办法
- Django学习-10-命名空间
不使用命名空间,且两个APP某条url使用相同的name属性 app01_urls.py urlpatterns = [ url(r'aaa/$', views.app01_aaa, name=& ...
- pat 1001-1010
最近有点神志无知 命运中很多事情真是奇妙 我必须改变自己的状态 1001 简单的模拟 #include<bits/stdc++.h> using namespace std; int ma ...
- 【BZOJ2998】Problem A(动态规划)
[BZOJ2998]Problem A(动态规划) 题面 BZOJ 题解 一个人的成绩范围可以确定为一个区间 这样就变成了 选择若干区间,不重合, 每个区间有个权值,求最大权值和 这样就可直接\(dp ...
- [SCOI2007]降雨量
ST表,再大力讨论一下(因为lower_bound和upper_bound,WA了一次) # include <bits/stdc++.h> # define RG register # ...
- Cow Contest POJ - 3660
题意 有n(1<=n<=100)个学生参加编程比赛. 给出m条实力信息.(1<=M<=4500) 其中每一条的格式为 A B (1<=A<=N,1<=B< ...
- jdbc连接数据库并打印的简单例子
6步连接数据库: import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; impor ...
- 【MyBatis源码分析】插件实现原理
MyBatis插件原理----从<plugins>解析开始 本文分析一下MyBatis的插件实现原理,在此之前,如果对MyBatis插件不是很熟悉的朋友,可参看此文MyBatis7:MyB ...