
需要遍历一个数组(内容作为参数)执行 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 async: false |
2 letitbesqzr OP @yangtukun1412 除了这个呢... 同步连 gif 图片都会卡死... |
3 yangtukun1412 2016-07-29 12:17:24 +08:00 |
4 chairuosen 2016-07-29 12:21:58 +08:00 |
nbsp; 5 jarlyyn 2016-07-29 12:24:34 +08:00 异步问题,一般都找 async.js 搞定呗 |
6 xxxyyy 2016-07-29 12:26:08 +08:00 http://jsfiddle.net/1807cb0f/ 你需要把每个 deferred 串起来才行,直接 deferred 数组是一个并行操作来的。 |
7 jasonslyvia 2016-07-29 12:52:45 +08:00 ```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 你的写法是并发队列 是应该像 3 楼那样变成串行队列来执行 |