关于 ajax 循环执行顺序的问题

关于 ajax 循环执行顺序的问题,第1张

关于 ajax 循环执行顺序的问题,第2张

需要遍历一个数组(内容作为参数)执行 ajax.. 需要挨个执行完成以后再执行下一个... 看了下 jquery 的 Deferred 自己试着写了个:
https://jsfiddle.net/6ayeq7hy/

但是没达到理想的效果,执行顺序是这样的:

加载遮罩层
1 开始执行
2 开始执行
3 开始执行
4 开始执行
5 开始执行
6 开始执行
1 执行完成
2 执行完成
3 执行完成
4 执行完成
5 执行完成
6 执行完成
ajax 全部执行完成,关闭遮罩层

需要达到以下效果:

加载遮罩层
1 开始执行
1 执行完成
2 开始执行
2 执行完成
3 开始执行
3 执行完成
4 开始执行
4 执行完成
5 开始执行
5 执行完成
6 开始执行
6 执行完成
ajax 全部执行完成,关闭遮罩层
----------------------- 以下是精选回复-----------------------

答:async: false
答:https://jsfiddle.net/wecw3w4h/
答:https://jsfiddle.net/8xduv3gt/
答:异步问题,一般都找 async.js 搞定呗
答:http://jsfiddle.net/1807cb0f/
你需要把每个 deferred 串起来才行,直接 deferred 数组是一个并行操作来的。
答:```javascript
[1, 2, 3, 4, 5].reduce((prev, curr) => {
prev.then($.get(`xxx.json?id=${curr}`); // then 里面还可以添加自己的逻辑
return prev;
}, Promise.resolve());
```
答:你的写法是并发队列
是应该像 3 楼那样变成串行队列来执行

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 关于 ajax 循环执行顺序的问题

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情