0

非同期関数への入力として値を使用したい配列があります。しかし、配列を繰り返し処理して非同期関数に送信すると、非同期関数へのすべての呼び出しが配列の最後の値によって行われるように見えます。

このような問題はコールバックで解決できると思っていたのですが、関数は私が使っているライブラリで、コールバックがありません.非同期関数で個々の配列値をすべて扱わせるにはどうすればよいでしょうか??

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
        });
    }
});
4

1 に答える 1

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]);
    }
});
于 2012-06-05T12:29:58.983 に答える