关于 ajax 循环执行顺序的问题
需要遍历一个数组(内容作为参数)执行 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 楼那样变成串行队列来执行
0条评论