美文网首页
node.js 之 async 的坑

node.js 之 async 的坑

作者: funpig | 来源:发表于2015-02-12 13:15 被阅读674次

    最近在写自己的app,从前到后都是自己一个人做,因为后台nodejs的一个需求要同步顺序执行,所以用到了async模块,有坑所以写下经验。
    Demo如下

    var path = require('path');
    var fs = require('fs');
    var async = require('async');
    
    var i = 0;
    var callback = function(){console.log('...');};
    var array = ['1', '2', '3', '4'];
    
    //因为callback什么实际事情都不做,所以就只传入,不调用
    async.eachSeries(array, function(obj, callback){
        console.log(obj);
    });
    console.log('****');
    

    发现输出

    xxx-MacBook-Pro:util xxx$ node test.js 
    1
    ****
    xxx-MacBook-Pro:util xxx$ 
    

    怎么会只做一次呢?明明就是要做4次的呀!坑在这里

    callback函数必须要调用

    我没有看async的代码,仅仅猜想是async模块需要根据callback来确定函数的执行情况。

    不管怎么样,加入callback的调用后,程序执行正常了!

    var path = require('path');
    var fs = require('fs');
    var async = require('async');
    
    var i = 0;
    var callback = function(){console.log('...');};
    var array = ['1', '2', '3', '4'];
    
    async.eachSeries(array, function(obj, callback){
        console.log(obj);
            callback();//切记callback一点要调用
    });
    console.log('****');
    
    xxx-MacBook-Pro:util xxx$ node test.js 
    1
    2
    3
    4
    ****
    xxx-MacBook-Pro:util xxx$ 
    

    另外的问题是callback里面‘...’为什么没打印出来呢?

    相关文章

      网友评论

          本文标题:node.js 之 async 的坑

          本文链接:https://www.haomeiwen.com/subject/qdfsxttx.html