如何在异步函数中使用数组值

时间:2012-06-05 11:44:24

标签: javascript asynchronous iteration

我有一个数组,我希望将其值用作异步函数的输入。但是当我遍历我的数组并将它们发送到异步函数时,对异步函数的所有调用似乎都是由数组中的最后一个值完成的。

我认为这类问题是通过回调解决的,但是函数是我正在使用的库,它不提供任何回调。我该怎么做才能使异步函数处理所有单个数组值??

var libraryName = new Library("#div");

$.post("myfile.php", {somedata}, function(data){
    console.log(data); //prints all correct values
    for(i in data){
        libraryName.asynchronousFunction({
            name: data[i].name // <--this value only becomes the last value in the data-array for all calls
        });
    }
});

1 个答案:

答案 0 :(得分:0)

因为闭包而尝试这样的事情:

$.post("myfile.php", {somedata}, function(data){
    console.log(data); //prints all correct values
    for(i in data){
        (function(elem) {
            libraryName.asynchronousFunction(
                {name: elem.name}
            );
        })(data[i]);
    }
});