0

ブロブ用のGoogle App Engineに多くのリクエストをしたいと思います。この基本的な for ループ メソッドは適切な数の要素を作成しますが、それらはすべて最後に要求された BLOB を指しています。

for (key=0; key < keyList.length; key++){
    var keyUrl = '/serve_blob/audio/'+keyList[key];
    $.ajax({ url : keyUrl, type : 'GET', dataType : 'text',
        success : function(data, xhr, status) {
            renderTemp("#audioTable", "audioTemplate", {'audioSrc':keyUrl});
        }
    });
}

ajax complete コールバックから呼び出すことで、2 番目の要求を適切に機能させることができます。多くのリクエストに対してこれを機能させるより良い方法はありますか?

4

2 に答える 2

0

これが閉鎖の性質です。クロージャ内のコード (たとえば、success 関数内のコード) が実行されると、 の値keyUrlは最後に設定されたものです。値は、クロージャが定義された時点ではキャプチャされません。

これを回避するには、別の関数内に ajax 呼び出しをkeyUrlパラメーターとして配置し、ループ内から呼び出します。

于 2012-04-20T00:49:04.540 に答える
0

「キー」を繰り返していませんか?あなたはそれを使用していません...

var keyUrl = '/serve_blob/audio/'+keyList[key];
于 2012-04-19T14:26:07.103 に答える