递归方法调用出错

Error on recursive method call

本文关键字:出错 调用 递归方法      更新时间:2023-09-26

我需要从外部API获取数据。由于我必须一次又一次地调用以检查状态,直到状态为TRUE,因此我将其置于递归循环中。我需要知道我的逻辑出了什么问题,因为我无法得到想要的输出。做响应。状态更新本身,或者我需要做另一个ajax就像我在代码中做的那样

   fetchFunct();
        function fetchFunct(){

         console.log("entered function");
          $.ajax
           ({
              type: "GET",
              url: "/content/mosaic/multi/preview/status/"+testId ,
              async: false,
              dataType : "json",
              success : function(response)
               {
                 console.log(response);
                 if(response.status === false)
                 {
                  console.log("Processing details"); //show still in progress
                  $("#load").show();
                  $("#heading").hide();
                  $("#b1").hide();
                  $("#b2").hide();
                  $("#b3").hide();
                  $("#b4").hide();
                  $("#b5").hide();
                 }else
                  {
                  $("#load").hide();
                   console.log("Loading 1");
                   $("#b1").click(function(){
                   $("#ad22img").attr("src","http://" + response.images.android22);})
                   console.log("Loading 2");
                   $("#b2").click(function(){$("#ad4img").attr("src","http://" + response.images.android4);})
                   console.log("Loading 3");
                   $("#b3").click(function(){ $("#apm6img").attr("src","http://" + response.images.appmail6);})
                    console.log("Loading 4");
                   $("#b4").click(function(){ $("#blbimg").attr("src","http://" + response.images.blackberryhtml);})
                    console.log("Loading 5");
                    $("#b5").click(function(){$("#iphnimg").attr("src","http://" + response.images.iphone5s);})
                    is_loaded = true;
                   }
                 }
            }).fail(function(data) { console.log("FAIL"); }).done(function(data) { console.log("coming out of ajax");
            });

if(!is_loaded)
{
console.log("entered if");
delay=delay*2;
if(delay>60)
{delay=1;}
setTimeout(fetchFunct,delay*1000);
}
//console.log("if not entered");
}

你应该在回调函数中再次调用你的函数。

if(response.status === false)
{
   console.log("Processing details"); //show still in progress
   $("#load").show();
   $("#heading").hide();
   $("#b1").hide();
   $("#b2").hide();
   $("#b3").hide();
   $("#b4").hide();
   $("#b5").hide();
   //Try again
   setTimeout(function(){
       fetchFunct();
   },1000);
}else

不需要AJAX调用下的任何setTimeout逻辑。