0

我想向谷歌应用引擎提出很多请求以获取 blob。这个基本的 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 完成回调中调用它来获得第二个正常工作的请求。有没有更好的方法让它适用于许多请求?

4

2 回答 2

0

你不是在迭代“关键”吗?你没有使用它...

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

这就是闭包的本质。当闭包中的代码(例如,成功函数中的代码)执行时, 的值keyUrl是它设置为最后的值 - 在定义闭包时不会捕获该值。

为避免这种情况,请将 ajax 调用放在单独的函数中,并keyUrl作为参数,并从循环内部调用它。

于 2012-04-20T00:49:04.540 回答