如何在循环中执行异步代码?

时间:2019-12-24 10:38:29

标签: javascript loops

我试图将其保持在循环中,但是每次我尝试将其保持在循环中时,网页都会冻结。有什么建议如何通过此获取实时位置更新吗?

function hello(){
   for(var i=0;i<=10;i++){  
      if(i==10){
         call();
         i=0;
     }
}

function call(){
  var settings = {
    "url": "https://pos.ls.hereapi.com/positioning/v1/locate?apiKey=imnotgoingtoshareliveapikeyeveragain",
    "method": "POST",
    "timeout": 0,
    "headers": {
      "Content-Type": "application/json"
    },
    "data": JSON.stringify({"lte":[{"mcc":404,"mnc":49,"cid":231706401}]}),
  };

  $.ajax(settings).done(function (response) {
    console.log(response);
  });
}

2 个答案:

答案 0 :(得分:1)

尝试此操作(每10秒将触发呼叫功能):

function call(){
    var settings = {
      "url": "https://pos.ls.hereapi.com/positioning/v1/locate?apiKey=s_WF6U2g60ucHbmnYIyuieeUWnkT0jshGf4mD33kpwI",
      "method": "POST",
      "timeout": 0,
      "headers": {
        "Content-Type": "application/json"
      },
      "data": JSON.stringify({"lte":[{"mcc":404,"mnc":49,"cid":231706401}]}),
    };

    $.ajax(settings).done(function (response) {
      console.log(response);
    });
  }

  function hello(){
     setInterval(function(){ call() }, 10000);
  };

  hello();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

答案 1 :(得分:0)

您可以使用setInterval每隔x秒运行一次,而不用编写两个单独的函数:

var settings = {
    "url": "https://pos.ls.hereapi.com/positioning/v1/locate?apiKey=s_WF6U2g60ucHbmnYIyuieeUWnkT0jshGf4mD33kpwI",
    "method": "POST",
    "timeout": 0,
    "headers": {
      "Content-Type": "application/json"
    },
    "data": JSON.stringify({"lte":[{"mcc":404,"mnc":49,"cid":231706401}]}),
  };

setInterval(function(){ 


 $.ajax(settings).done(function (response) {
    console.log(response);
  });



 }, 10000);