问题:有一个数组,数组中每一个元素异步请求后端获得相应的内容进行操作。
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()相关内容还有很多
Atas ialah kandungan terperinci $.Deferred(),for循环内异步请求问题的解决方法. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!