当前位置:首页 > 日记 > 正文

3实现在Node.js同步操作

3实现在Node.js同步操作
众所周知,异步的特点和优势是得天独厚的,但在同步过程中同时需要(如执行控制程序:订单-> -> func1 func2 func3)也很常见。本文就是记录这个问题的一些想法。

需要执行的函数:

复制代码代码如下所示:

VaR func1 =功能(REQ,RES,回调){

setTimeout(){()函数(

(console.log func1);

回调(REQ,RES,1);

},13000);

}

VaR func2 =功能(REQ,RES,回调){

setTimeout(){()函数(

console.log(还是一样的);

回调(REQ,RES,2);

},5000);

}

无功func3 =功能(REQ,RES,回调){

setTimeout(){()函数(

console.log(func3);

回调(REQ,RES,3);

},1000);

}
可以看出,setTimeout函数用于在func1,func2和func3,和执行的时间是13秒,5秒和1秒分别。由于对Nodejs的异步特性,如果使用的是普通的函数调用的方法:

复制代码代码如下所示:

无功需求= null;

var = null;

Var(回调函数){ };

func1(REQ,RES,回调);

func2(REQ,RES,回调);

func3(REQ,RES,回调);
Output content:

复制代码代码如下所示:

在func3

在func2

在func1
原因是NodeJS是异步的,而不等待func1 func2执行后执行,而是立即执行(所以是func3)。因为func3具有最短的运行时间,这是第一次,还是一样的时间,func1上。但这显然不是我们想要的结果。我要什么怎么办呢

解决方案之一:回调

复制代码代码如下所示:

深嵌套

无功需求= null;

var = null;

func1(REQ,RES,函数()){

func2(REQ,RES,函数()){

func3(REQ,RES,函数()){

(0)process.exit;

})

});

});
这种方法虽然能很快解决,但也存在明显的问题。一是代码维护。二是代码的深层嵌套看起来很不舒服,这种方法是不可取的。

解决方案二:递归调用

复制代码代码如下所示:

功能executefunc(funcs,计数,求和,请求,RES){

如果(计数=总和){

返回;

}

别的{

funcs {数量}(需求、要求、功能()){

计数+;

executefunc(funcs,计数,求和,请求,RES);

});

}

}

同步调用

无功需求= null;

var = null;

无功funcs = { func1,func2,func3 };

VaR len = funcs.length;

ExecuteFunc (FuncS, 0, len, req, RES);
许多函数首先由一个数组组成,递归函数的特性可以用来使程序按一定的顺序执行。

解决方案三:调用类库

随着Nodejs的发展,对此有越来越多的类库。步和异步是好的。

1步的呼叫相对来说比较清爽。

复制代码代码如下所示:

(步骤

功能thefunc1(){

func1(本);

},

功能thefunc2(finishflag){

console.log(finishflag);

还是一样的(这个);

},

功能thefunc3(finishflag){

console.log(finishflag);

}

);
2.async的系列方法,例如,其调用方法:

复制代码代码如下所示:

无功需求= null;

var = null;

Var(回调函数){ };

async.series(

{

函数(回调){

func1(REQ,RES,回调);

},

函数(回调){

func2(REQ,RES,回调);

},

函数(回调){

func3(REQ,RES,回调);

}

}

);

相关文章

PS图象处理软件对秋天美丽的阳光之

PS图象处理软件对秋天美丽的阳光之

阳光,之美,图象,处理软件,秋天,素描为蓝色和黄色,当材料直接以黄绿色到橙黄色,深色得到蓝色的初步颜色即可;然后将树林中的强光提取出来,用模糊滤镜制作透视灯效果。 素描为蓝色和黄色,当材料直接以黄绿色到橙黄色,深色得到蓝色的初步颜色即可;然…

PS图象处理软件创造了一个时尚、美

PS图象处理软件创造了一个时尚、美

分支,圣诞,图象,处理软件,创造了,本教程介绍PS图象处理软件的朋友创造一个美丽的树支圣诞快乐艺术字的使用方法,本教程是非常可爱的。难度不是很大,建议朋友你喜欢学习的教程在一起。 本文采用PS图象处理软件打造时尚美丽的树枝的圣诞艺术字…

面向对象的关键字用法分析

面向对象的关键字用法分析

关键字,面向对象的,电脑软件,本文的示例分析了Javascript对象的关键字用法,供大家参考,具体分析如下: 当您需要初始化一个属性时,您可以在原型对象中使用这个关键字: 复制代码代码如下所示: 功能人(){ this.name =金美; this.age = 25; }; 新的人(); 新…

js做了一个简单日历的完整例子。

js做了一个简单日历的完整例子。

例子,日历,完整,简单,电脑软件,本文介绍了用js制作一个简单日历的方法,供大家参考: 今天我学会了用js来实现日历的制作。通过对这个用法的回顾,它与标签的制作有点不同。新的对手,我希望我能坚持下去,那么你的JS大神。 使用的innerHTML Now t…

PS图象处理软件的设计创意风格2015

PS图象处理软件的设计创意风格2015

教程,创意,图象,处理软件,海报,本教程介绍2015旦使用PS图象处理软件设计的创意海报风格双朋友方法教程出来的很有创意,马上就要到圣诞节和元旦,我相信这个教程对大家会有帮助的,好的,在这里我们要学习。 本教程使用PS图象处理软件设计的2015年…

提高效率的必要性!对于矢量图PS图象

提高效率的必要性!对于矢量图PS图象

矢量图,提高效率,必要性,图象,处理软件,本文主要介绍了10个超实用的PS图象处理软件矢量图技术提高效率的设计师必要的。我希望你能继续寻找更好的生产方法和享受设计的过程! 大家都知道,PS图象处理软件是编辑位图的一个重要应用。事实上,PS图…

CDR绘制的黑色版iphone4手机教程

CDR绘制的黑色版iphone4手机教程

教程,绘制,色版,电脑软件,CDR,本教程介绍给朋友,用CDR绘制iphone4手机黑色版。从教程绘制iphone4手机还是很不错的,而且难度不是很大。建议像你这样的朋友和教程一起学习。 本教程教朋友用CDR画的iPhone4手机黑色版,手机地图的处理效果的教程…

jQuery通过加载获取文件内容并跳转

jQuery通过加载获取文件内容并跳转

锚点,加载,文件,跳转到,方式,本文演示了jQuery如何通过负载获取文件的内容,并跳转到锚点: 类似于帮助文档类型的页面已于昨天完成。左边的导航,和正确的显示的内容。原来,右边的内容显示区是通过iframe,但因为iframe自适应高度,有一种方法来改变…

复制谐波属性和清除谐波图的CDR软

复制谐波属性和清除谐波图的CDR软

属性,清除,谐波,电脑软件,CDR,下面的教程是向朋友介绍CDR软件,以复制和调和属性和消除和解方法。本教程是比较基础的,非常适合初学者学习。推荐朋友一起学习。 CorelDRAW软件教程 CorelDRAW软件 交互式协调工具的使用(协调工具) 画一个图形,…

PHP两种快速排序算法的一个实例

PHP两种快速排序算法的一个实例

快速排序算法,两种,实例,电脑软件,PHP,虽然PHP Web应用程序开发这样的,我们不是在排序的重要性的过分强调,因为PHP本身带来的(如排序)这样强大的排序功能,但在一些重要的场合,如一些高并发的情况下,我想影响的排序算法是不可忽视的。所以我们介绍…

用ps绘制半透明苹果标志

用ps绘制半透明苹果标志

绘制,半透明,标志,电脑软件,ps,本教程介绍了用PS.制作半透明苹果罗的方法,教程比较简单,制作过程也很详细。感兴趣的朋友,快学。 在本教程中学习PS的朋友如何用苹果画一个半透明的符号PS,渲染效果非常漂亮,课程难度一般,制作方法比较详细,非常适合…

AI做超级简单的logo教程

AI做超级简单的logo教程

教程,简单,电脑软件,AI,logo,本教程是介绍给朋友的,利用ai做了超简单的符号方法。本教程是比较基础的,非常适合初学者学习。主要的练习是AI的钢笔工具。建议过来,希望能帮助你。 这次我们将学习人工智能创建一个超简单的符号方法。本教程是初…