function prepareit(list){
for(i=0;i<list.length;i++){
var test = list[i];
$.ajax({....});
}
}
function testit(list){
for(i=0;i<list.length;i++){
var test = list[i];
$.ajax({....});
}
}
$(document).ready(function() {
var list = ['ti','meti','medes','fra','u','w','ro','sit','hd','i'];
prepareit(list);
testit(list);
});
当“prepareit”完成时,我需要执行“testit”函数。我已经尝试过“when-then”方法,但是函数同时启动。
(抱歉我的英语不好)
答案 0 :(得分:1)
创建一个延迟对象,该对象在完成所有ajax请求后解析。
function prepareit(list){
var defArr = [];
for(i=0;i<list.length;i++){
var test = list[i];
defArr.push($.ajax({....}));
}
return $.when.apply($,defArr);
}
function testit(list){
var defArr = [];
for(i=0;i<list.length;i++){
var test = list[i];
defArr.push($.ajax({....}));
}
return $.when.apply($,defArr);
}
$(document).ready(function() {
var list = ['ti','meti','medes','fra','u','w','ro','sit','hd','i'];
prepareit(list).done(function(){
testit(list).done(function(){
alert("All done!");
});
});
});
答案 1 :(得分:0)
您可以在testit
中的ajax请求的成功函数中调用prepareit
,如下所示:
function prepareit(list){
for(i=0;i<list.length;i++){
var test = list[i];
$.ajax({ success: function (data) { testit(list); } });
}
}
function testit(list){
for(i=0;i<list.length;i++){
var test = list[i];
$.ajax({....});
}
}
$(document).ready(function() {
var list = ['ti','meti','medes','fra','u','w','ro','sit','hd','i'];
prepareit(list);
//testit(list);
});
但是,如果依赖于“测试”之前“准备好”的整个列表,这将不起作用。我会说循环ajax请求不是最好的方法 - 如果可能的话你应该改变你的代码来传递ajax调用中的整个列表而不是循环多次(不知道你想要完成的是什么)疗程)。