【发布时间】:2012-07-18 19:20:33
【问题描述】:
我在循环时遇到了这个小麻烦,我总是得到相同的“y”值 (5),它不会减少或增加。我想要的是重复 ajax 调用 X 次 [all] 并通过匿名函数传递响应和当前调用号码。我希望你能帮助我。
function _shds(long, count, func) {
for (var y = 0; y < count; y++) {
gapi.client.load('urlshortener', 'v1', function() {
var request = gapi.client.urlshortener.url.insert({
'resource': {
'longUrl': long
}
});
var resp = request.execute(function(resp) {
func(resp.id, y);
});
});
}
}
var total = 3;
var base = "soem";
var lista = ["1", "2", "3", "4", "5"];
_shds("222", total, function(data, y) {
if (data != "undefined") {
newbase = base.replace("soem", data);
console.log(lista[y].uid + newbase + " pos:" + y);
}
});
更新:抱歉,这是代码示例:http://jsfiddle.net/ZgXZB/
【问题讨论】:
-
尝试将 i 复制到另一个变量,然后将该变量传递给调用。像
var j = i;然后call(data, j); -
@MrOBrian JavaScript 变量具有函数作用域,而不是块作用域。
-
你的意思是你从服务器得到了5倍的相同答案?
-
@jtlebi 完全正确,因为我希望改变值。你能检查一下这个jsfiddle吗? jsfiddle.net/ZgXZB
-
好了,5次同数问题就答完了。然而,服务器也总是返回相同的答案,因为请求是相同的。缩短相同的 URL 导致返回相同的短 URL。
标签: javascript jquery loops for-loop