async模块学习中的疑问
发布于 1个月前 作者 CommanderXL 204 次浏览 来自 问答

今天学习了下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 可要费一点脑筋。

回到顶部