$.Deferred(),for循环内异步请求问题的解决办法
2017-09-26 12:07
274 查看
问题:有一个数组,数组中每一个元素异步请求后端获得相应的内容进行操作。
for循环中使用异步请求时出现的问题就是:异步请求是不阻塞主程序,当异步请求出数据的时候,主程序可能已经结束,这就给我们程序带来问题。
如何在for循环内使用异步请求,同时保证数据的执行顺序?
解决办法:$.Deferred()
另外$.deferred()相关内容还有很多,记录相关地址,以便以后学习查看:
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()相关内容还有很多,记录相关地址,以便以后学习查看:
http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html http://www.css88.com/archives/4750/comment-page-1[/code]
相关文章推荐
- \t\t当异步请求与Silverlight相遇时,彼此通信问题的解决办法
- For循环中由于ajax异步导致的问题解决(增加alert数据正常,去掉alert之后数据错误)
- jQuery在异步请求数据返回后,调用$("selector").html(data.content);之后因为一些特殊字符或者',"不能显示内容的问题解决办法
- [转]IOS程序之HTTP同步请求与异步请求问题解决
- for循环中进行Promise异步操作的问题总结
- iOS----POST异步请求解析数据时bug解决办法
- 用9种办法解决 JS 闭包经典面试题之 for 循环取 i
- Ajax异步请求阻塞情况的解决办法
- 解决vue的 v-for 循环中图片加载路径问题
- 170106、用9种办法解决 JS 闭包经典面试题之 for 循环取 i
- SparkSQL: no typetag available for xxxx问题的解决办法
- svn中“clean up”死循环问题解决办法
- 关于通过http请求访问Linux下的ftp的问题以及解决办法
- PIP安装Python的scipy,scrapy等包出现“failed building wheel for xxx”问题解决办法
- Java 跳出递归循环问题解决办法
- 移动开发:Tabhost中子Activity使用startActivityForResult后获取不到回调值问题的解决办法
- request.getRemoteAddr()问题及解决办法 X-FORWARDED-FOR
- 采用自执行的匿名函数解决for循环使用闭包的问题
- AngularJS出现$http异步后台无法获取请求参数问题的解决方法
- “SET 命令设置的环境变量在 FOR 循环中始终为空”问题的原因与解决方法