在jquery中为每个循环循环不正确

时间:2018-01-08 16:40:47

标签: javascript jquery arrays

我将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");
                }
          });
       })

1 个答案:

答案 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。你可以用你喜欢的东西替换。