我将na元素推入javascript数组,而它是每个循环的。但是循环并不像预期的那样。
代码:
//lets say the length is 1 for array id.If its in error it has to loop 2 times, but looping only once
$.each(id, function(i, itemI) {
$.ajax({
type: "GET",
url: url1.trim(),
dataType: "json",
success: function(data) {//do something
},
error: function(xhr,status){
//push an element into array here
id.push("something");
}
});
})
答案 0 :(得分:0)
根据doc,$.each
最初获取对象/数组的length
属性并进行迭代,直到达到length
。
你可以这样做。
var id=0, req = makeReq(id), makecalltimeout;
function makeReq(id)
{
id = id || "something"; //If id is undefined during first call.
var data = {id:id};
$.ajax({
type: "GET",
url: "google.com",
dataType: "json",
data:data,
success: function(data) {//do something
},
error: function(xhr,status){
clearTimeout(makecalltimeout);
makecalltimeout = setTimeout(makeReq(Math.floor(Math.random()*10)),1000)
}
});
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
这里我将在递归失败时以1秒的时间间隔发出请求。只是为了在params中发送随机数据,我使用了Math.floor(Math.random()*10
。你可以用你喜欢的东西替换。