cod*_*er9 4 ajax jquery asynchronous
我想在循环中调用多个API(例如:$ .each).我可以用async:false模式执行此操作,但这会使脚本滞后.如何在同步模式下实现这一点?只是忽略async选项只会将最后一个元素list发送到api调用.
$.each(lists, function(index, value) {
channel = lists[index].channel;
list = lists[index].list;
$.ajax({
url : 'api.php?list=' + list + '&from=' + from + '&to=' + to,
dataType : 'json',
async : false,
success : function(data) {
obj = data;
$.ajax({
url : 'api.php?list=' + list + '&from=' + from + '&to=' + to + '&action=sender',
dataType : 'json',
async : false,
success : function(data) {
obj['senders'] = data.msg;
CommonContainer.inlineClient.publish(channel, obj);
}
});
}
});
});
Run Code Online (Sandbox Code Playgroud)
那是因为channel并且list是全局的(或传递给函数范围之外的声明$.each),因此不受闭包的保护.
用这个 :
var channel = lists[index].channel;
var list = lists[index].list;
Run Code Online (Sandbox Code Playgroud)
你也应该声明obj为
var obj = ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3277 次 |
| 最近记录: |