node mysql同步_一些nodejs实现同步操作想法实现
115同步盘v1.0.9.3 正式版
类型:下载工具大小:1.6M语言:中文 评分:1.8
标签:
立即下载
众所周知,异步是nodejs中得天独厚的特点和优势,但同时在程序中同步的需求(比如控制程序的执行顺序为:func1 -> func2 ->func3 )也是很常见的。本文就是对这个问题记录自己的一些想法。
需要执行的函数:
var func1 = function(req,res,callback){
setTimeout(function(){
console.log('in func1');
callback(req,res,1);
},13000);
}
var func2 = function(req,res,callback){
setTimeout(function(){
console.log('in func2');
callback(req,res,2);
},5000);
}
var func3 = function(req,res,callback){
setTimeout(function(){
console.log('in func3');
callback(req,res,3);
},1000);
}
可以看出在func1,func2和func3中都是用了setTimeout函数,执行的时间分别为13秒,5秒和1秒。由于nodejs异步的特性,如果使用普通的函数调用方法:
var req = null;
var res = null;
var callback = function(){};
func1(req,res,callback);
func2(req,res,callback);
func3(req,res,callback);
输出内容:
in func3
in func2
in func1
原因是因为nodejs是异步的,func2不会等func1执行完毕后再执行,而是立即执行(func3也是如此)。由于func3的运行时间最短而率先结束,func2次之,func1最后。但这明显不是我们想要的结果。怎么办?
解决办法一:callback
//深层嵌套
var req = null;
var res = null;
func1(req,res,function(){
func2(req,res,function(){
func3(req,res,function(){
process.exit(0);
})
});
});
这种方法虽然能快速的解决,但暴露的问题也很明显,一是代码维护不方面,二是代码的深层嵌套看起来很不舒服。这种方法并不可取。
解决方法二:递归调用
function executeFunc(funcs,count,sum,req,res){
if(count == sum){
return ;
}
else{
funcs[count](req,req,function(){
count++;
executeFunc(funcs,count,sum,req,res);
});
}
}
//同步调用
var req = null;
var res = null;
var funcs = [func1,func2,func3];
var len = funcs.length;
executeFunc(funcs,0,len,req,res);
先将多个函数组成一个数组。再可以利用递归函数的特性,使程序按照一定的顺序执行。
解决方法三:调用类库
随着nodejs的发展,响应的类库也越来越多。Step和async 就是其中不错的。
1. Step的调用相对比较清爽:
Step(
function thefunc1(){
func1(this);
},
function thefunc2(finishFlag){
console.log(finishFlag);
func2(this);
},
function thefunc3(finishFlag){
console.log(finishFlag);
}
);
2.async 的 series方法,就本例而言,它的调用方法:
var req = null;
var res = null;
var callback = function(){};
async.series(
[
function(callback){
func1(req,res,callback);
},
function(callback){
func2(req,res,callback);
},
function(callback){
func3(req,res,callback);
}
]
);
node mysql同步_一些nodejs实现同步操作想法实现相关推荐
- node mysql框架_关于nodejs的框架选择
对于新入门的小伙伴来说,选择一个合适的nodejs框架可能是一件很头疼的事情,我最初也为这个头疼过,下面分享一下我的框架选择之路 nodejs的框架 最近来node的火热,带动了一大批的框架,例如 e ...
- node mysql崩溃_为什么这个mysql错误会导致nodejs崩溃而不是去catch函数?
事实上,@Quentine很接近正确的事情... 最后,我创建了自己的包装函数,用适当的promise处理来创建connection+call execute. import mysql = requ ...
- es用canals怎么和mysql同步_搬运基础服务到kubernetes,遇这3类大坑怎么破?
工作中需要将原本部署在物理机或虚拟机上的一些基础服务搬到kubernetes中,在搬的过程中遇到了不少坑,笔者在此特别分享一下所遇到的问题及相应的解决方法~ 一.异常网络引起的问题 之前使用redis ...
- nodejs mysql事务处理_关于NodeJs如何使用Mysql模块实现事务处理实例
本篇文章主要介绍了NodeJs使用Mysql模块实现事务处理 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 依赖模块: 1. mysqlnpm install mysq ...
- 本地mysql和阿里云mysql同步_阿里云RDS和本地mysql做主从同步
一.从RDS备份要同步的数据库到本地服务器 建议将表结构和数据分开备份. [root@localhost ~]# mysqldump -hrm-wz9a985njgong7yh5.mysql.rds. ...
- access mysql 同步_使ACCESS数据库保持同步
同步(Synchronization)是数据库在网络环境中应用所要涉及到的一个重要概念.其基本过程大致分以下几个步骤:首先把一个数据库设为可复制副本属性,使其成为设计正本(VB中称设计原版,ACCES ...
- node mysql和koa_2019年NodeJS框架Koa和Express选型比较
Koa和Express都是NodeJS的主流应用开发框架. Express是一个完整的nodejs应用框架.Koa是由Express团队开发的,但是它有不同的关注点.Koa致力于核心中间件功能.nod ...
- derby mysql 同步_[Derby]数据库操作说明
1. 创建新数据库 connect 'jdbc:derby:mydb;create=true'; ij> connect 'jdbc:derby:mydb;create=true'; ij> ...
- derby mysql 同步_三分钟学会使用Derby数据库
Derby数据库是一个纯用Java实现的内存数据库,属于Apache的一个开源项目.由于是用Java实现的,所以可以在任何平台上运行:另外一个特点是体积小,免安装,java1.6开始集成了derby数 ...
最新文章
- java.lang.IllegalArgumentException at org.springframework.asm.ClassReader.init(Unknown Source)
- 2020-05-16 为什么PID中的P或者说状态反馈中的K不能无限增大
- Nginx安装手冊以及图片server部署
- 如何在pe里加载阵列卡驱动_PE中RAID卡驱动的添加办法
- Koo叔说Shader-- 熟悉渲染管线
- jcp jsr_JCP选举结果:LJC和CloudBees赢得EC席位
- SQL注入时order by 后面加数字的作用
- 对外汉语偏误语料库_对外汉语偏误汇总
- 蓝牙配对-扫描-连接-状态查询
- Feburary——1052.爱生气的书店老板
- 盘点业务流程的SAP操作调整
- maven PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable
- 仿速度装机联盟程序源码,装机联盟程序源码 安装联盟程序源码
- Java 版本任你发,我用Java8.(Java 15 新功能介绍 )
- 【转载】讲真,认知几乎是人和人之间唯一的本质差别。
- 京津冀计算机学科大学排名,2021京津冀地区民办大学排名前十
- opencv录制视频进行保存
- No.051<软考>《(高项)备考大全》【冲刺5】《软考之 119个工具 (3)》
- java服务端集成极光消息推送
- java的equle怎么用,法语虚拟式现在时(Le Subjonctif Présent)用法总结(一)
热门文章
- C#winform【实现上一张、下一张挑选图片】--实战练习七
- 库卡工业机器人负载曲线图_KUKA/库卡工业机器人 KR10 R1100 机械手臂 负载10KG 六轴...
- 【徐禾 政治经济学概论】 读书笔记 §1.3劳动的二因素:具体劳动和抽象劳动(上.价值质的规定性)
- 如何解决抽样调查过程中所面临的难点和问题?——以政治学研究为例
- ATS子系统主机服务器功能,ATC、ATP、ATO系统详细介绍
- MySQL系列3—标准SQL语言
- Altium designer22 原理图绘制 altiumdesigner
- linux版drastic模拟器设置,NDS模拟器如何设置?怎样配置nds模拟器NO$GBA?
- Ubuntu卸载软件
- 批量提取文件名(JPG照片等)