>  기사  >  웹 프론트엔드  >  $.Deferred(), for 루프의 비동기 요청 문제에 대한 솔루션

$.Deferred(), for 루프의 비동기 요청 문제에 대한 솔루션

一个新手
一个新手원래의
2017-10-07 11:39:261888검색

질문: 배열이 있고 배열의 각 요소는 작업에 필요한 해당 콘텐츠를 얻기 위해 백엔드에 비동기적으로 요청합니다.

var arr=[];for(let i=0;i<arr.length;i++){
    $.post("请求地址",“传递数据”,function(){
         //异步请求后的操作
   })
}

for 루프에서 비동기 요청을 사용할 때 발생하는 문제는 비동기 요청이 메인 프로그램을 차단하지 않는다는 것입니다. 비동기 요청이 데이터를 보낼 때 메인 프로그램이 종료되어 프로그램에 문제가 발생할 수 있습니다.

데이터의 실행 순서를 보장하면서 for 루프 내에서 비동기 요청을 사용하는 방법은 무엇입니까?

해결책: $.Deferred()

var lives=[……];
var defer = $.Deferred(); 
defer.resolve($("#aa").append("没有意义")); //该句为必须的,即使什么也不需要操作
$.each(lives,function(i,e){  
  defer = defer.then(function () {  
      return $.ajax({      //进行异步请求操作
        url:"请求地址",  
        type:&#39;post&#39;,
        data:{            //异步请求的数据
          "username":lives[i].username,
          "userId":lives[i].id,
        },
        dataType: "jsonp",
        success:function(data){  
          //异步请求后的操作
        }  
    })
  });  
});

이 외에도 $.deferred()

관련 내용이 많이 있습니다.

위 내용은 $.Deferred(), for 루프의 비동기 요청 문제에 대한 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.