我正在尝试运行一些在内部有ajax调用的函数,按顺序。我无法异步执行此操作,因为它们都是同时启动的。
这是我的代码:
function engine_start() {
a1();
a2();
}
a1() {
$.ajax(
url: // some code and url
}).then(function(data) {
if (some_condition()) {
console.log("finished a1. success");
}
});
};
a2() {
$.ajax(
url: // some code and url
}).then(function(data) {
if (some_condition()) {
console.log("finished a2. success");
}
});
};
我希望a2()
仅在a1()
成功后执行,在我的情况下是finished a1. success
。注意some_condition()
也包含内部ajax请求,所以我也需要处理它。
所以我理想的运行会是这样的:
1) engine_start()
2) a1 starts executing.
3) a1 finishes
4) a2 starts executing.
5) a2 finishes
答案 0 :(得分:1)
你应该使用某种回调机制。
function engine_start() {
a1(a2);
}
a1(callback) {
$.ajax(
url: // some code and url
}).then(function(data) {
if (some_condition()) {
console.log("finished a1. success");
callback(); // Will execute a2 when a1 is done executing.
}
});
};
a2() {
$.ajax(
url: // some code and url
}).then(function(data) {
if (some_condition()) {
console.log("finished a2. success");
}
});
};