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,回调);

}

}

);

tag:同步操作电脑软件Nodejs

相关内容