问题:有一个数组,数组中每一个元素异步请求后端获得相应的内容进行操作。
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中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号