jquery ajax返回数据次序一问? 400 报错
近日在开发一应用,在前端使用 jquery ajax返回数据时,返回同一格式的数据次序不一,请问如何解决呢?已经使用 settimeout,但是不行。。。。
例如:打开页面后需要向ajax发送连续请求取得数据,js里面已经使用循环for执行请求,但是每当刷新页面时,得到的数据不是按循环的次序。。请问有方法可解决吗?
代码事例:
function 抓羊(s){
$.ajax{
请求一只羊
success:function(羊){
返回一只羊;
})
如果抓不到会返回失败或者0
}
期间代码省略。主要显示执行时
var wolf = 狼;
for(i=0;i<wolf.length;i++){
如果肚子饿了就 抓羊(i);
}
按情况应该有多少只狼就能抓多少的羊,是按次序的,可是实际情况好像是随机的,每次刷新页面次序都不一样。。。求解。。
临时解决方法是,先规划抓羊后存放的位置,然后对应存放。。。
应该是:asyn=true,表示异步(默认),可设置成false试试。######ajax 本来就是异步的,你不可能保证返回结果的顺序
######有设置成同步的参数,设置下试试。######
同步的话,页面就卡住了。
你可以设置一个任务队列,数组就能搞定了。每次ajax请求回调执行后,检测任务队列还有任务没。照上面的例子,就是狼要抓羊,先排队,一个抓完后另一个继续抓。每只狼抓羊的速度都不一样(请求从发送到获取到返回信息再执行回调的时间),这个速度也不是每次都一样的,你同时放出几只狼,当然会有先后的区别了。
同步会降低页面操作的流畅性,非必要情况不建议使用。
还有就是用批处理,将多个请求合成一个,直接告诉后台,有N只狼要抓羊,后台看着办。这个需要修改你的后台代码。但是在有多次页面操作的时候,还是要用队列,每次N只狼,这个是前台代码修改。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。