那么问题来了,forEach()是不是异步的呢?按理说,没有加Sync,应该是异步的呀。
复制代码 代码如下:
var arr = ['a', 'b', 'c']
var str = '123'
arr.forEach(function(item) {
str += item
while (true) {} //用一个死循环,卡死它~~
})
console.log(str)
运行上面的代码,结果它就这么卡死了,没有任何输出。。
所以说,node里的forEach()是同步的!!
第一次用node的时候,没有考虑过这个问题,按同步的写了,写突然想到,测试后虚惊一场,以为以前的代码都写错了。
调用类库随着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)
}
]
)