async模块学习中的疑问
今天学习了下async模块。 其中有lib文件夹里面有几个辅助函数,比如:
function inc(n,callback,timeout){
timeout=timeout||0;
setTimeout(function(){
callback(null,n+1); //将参数n自增1之后的结果返回给async
},timeout);
}
async.parallel([
function(cb){inc(1,cb)},
function(cb){inc(2,cb)}
],function(err,results){
log("1.1 err: ",err);
log("1.1 results: ",results);
})
第一段代码里面的“将参数n自增1之后的结果返回给async”应该怎么理解呢?
4 回复
这不叫自增,只是简单加1。async给每个任务传入一个callback。当所有callback被调用则任务完后,async再调用你最后那个函数。async对付复杂情况比较不好用。看下bluebird,比async好用
@klesh 能举个例子吗,我暂时想不到哪些复杂情况
@captainblue2013做个小项目练练手。async使用中要特别处理cb,promise则不用。比如说往数据库插入数据时,以blog为例,post下面有tag。假定这是两个表,再有post_tag作关联。试下用两种方式去完成,对比一下。
要注意一点, tag 可能已经存在。这种在同步编程中很容易解决的问题在 node.js 可要费一点脑筋。