질문: 배열이 있고 배열의 각 요소는 작업에 필요한 해당 콘텐츠를 얻기 위해 백엔드에 비동기적으로 요청합니다.
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:'post', data:{ //异步请求的数据 "username":lives[i].username, "userId":lives[i].id, }, dataType: "jsonp", success:function(data){ //异步请求后的操作 } }) }); });
이 외에도 $.deferred()
관련 내용이 많이 있습니다.위 내용은 $.Deferred(), for 루프의 비동기 요청 문제에 대한 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!