需要遍历一个数组(内容作为参数)执行 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 全部执行完成,关闭遮罩层
1
yangtukun1412 2016-07-29 12:01:39 +08:00 1
async: false
|
2
letitbesqzr OP @yangtukun1412 除了这个呢... 同步连 gif 图片都会卡死...
|
3
yangtukun1412 2016-07-29 12:17:24 +08:00 1
|
4
chairuosen 2016-07-29 12:21:58 +08:00 1
|
5
jarlyyn 2016-07-29 12:24:34 +08:00 1
异步问题,一般都找 async.js 搞定呗
|
6
xxxyyy 2016-07-29 12:26:08 +08:00 1
http://jsfiddle.net/1807cb0f/
你需要把每个 deferred 串起来才行,直接 deferred 数组是一个并行操作来的。 |
7
jasonslyvia 2016-07-29 12:52:45 +08:00 1
```javascript
[1, 2, 3, 4, 5].reduce((prev, curr) => { prev.then($.get(`xxx.json?id=${curr}`); // then 里面还可以添加自己的逻辑 return prev; }, Promise.resolve()); ``` |
8
xi_lin 2016-07-29 12:58:12 +08:00 1
你的写法是并发队列
是应该像 3 楼那样变成串行队列来执行 |