node.js等待回调

时间:2014-06-11 11:55:02

标签: node.js callback wait

我正在尝试掌握node.js的流量控制。 在下面的代码中,我定义了一个包含递归函数的函数。我想调用这个“main”函数,等待它完全完成,然后console.log结果。问题是node.js的非阻塞方式。如何设置回调以确保输出正确?

在下面的代码中输出将为空,我该如何更改?据我所见,我必须设置一个回调,但到目前为止我所有的努力都没用。

var main = function(){

    var list=[1,2,3,4];
    var value=[];

    function twotimes(i){
        if (i<list.length){
            var j=i*2;
            value[i]=j;
            twotimes(i+1); //recursive call of "twotimes"
        }
    }
    twotimes(0); //initiate the function
}

main(function(err){
console.log(value);
});

1 个答案:

答案 0 :(得分:1)

试试这个:

var main = function(callback){
    var list=[1,2,3,4];
    var value=[];
    function twotimes(i){
        if (i<list.length){
            var j=i*2;
            value[i]=j;
            twotimes(i+1); //recursive call of "twotimes"
        }
    }
    twotimes(0); //initiate the function
    callback(value) 
}

main(function(value){
    console.log(value);
});