异步的可变使用问题

时间:2015-07-18 19:58:01

标签: javascript node.js asynchronous

var async = require('async');

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

var functions = [];

for(i in list){
    var f = function(call){
        console.log(list[i]);
        call();
    }
}

async.parallel(functions,function(err){
    if(err) throw err;
    console.log('finish first try');
});

async.parallel([function(call){
    for(i in list){
        console.log(list[i]);
        if(i == list.length-1)
            call();
    }
}],function(err){
    if(err) throw err;
    console.log('finish second try');
});

日志:

先完成尝试

1

2

3

4

5

完成第二次尝试

添加为数组时,

功能不起作用。为什么我不能在第一次看到这些数字?为什么不回来?

1 个答案:

答案 0 :(得分:0)

因为你没有填充functions数组而需要这个:

for(i in list){
    var f = function(call){
        console.log(list[i]);
        call();
    }
    functions.push(f);
}

或者如果您需要迭代i

for(i in list){
    var f = (function(i) {
        return function(call){
          console.log(list[i]);
          call();
       };
    })(i);
    functions.push(f);
}