如何让nodejs同步操作

JavaScript013

如何让nodejs同步操作,第1张

调用类库

随着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里几乎所有用到回调函数的地方,都是异步的,回调函数后面的代码很可能比回调函数中的代码后先执行,特别是数据库操作。当然,node也提供了同步版本的函数,例如文件操作,fs.readFileSync()是fs.readFile()的同步版本。

那么问题来了,forEach()是不是异步的呢?按理说,没有加Sync,应该是异步的呀。

复制代码

代码如下:

var

arr

=

['a',

'b',

'c']

var

str

=

'123'

arr.forEach(function(item)

{

str

+=

item

while

(true)

{}

//用一个死循环,卡死它~~

})

console.log(str)

运行上面的代码,结果它就这么卡死了,没有任何输出。。

所以说,node里的forEach()是同步的!!

第一次用node的时候,没有考虑过这个问题,按同步的写了,写突然想到,测试后虚惊一场,以为以前的代码都写错了。