我想要进行一个 API 调用,打印出从 2 个辅助 API 调用中检索到的值。
参见:
function api_call() {
$.ajax({
url: "...",
success: function (objects) {
for (var i = 0; i < objects.length; i++) {
var id_1 = api_helper1(objects[i].id_1);
var id_2 = api_helper2(objects[i].id_2);
console.log(id_1 + id_2);
}
}
});
}
function api_helper1(id_1) {
$.ajax({
url: "...",
success: function (value) {
return value;
}
});
}
function api_helper2(id_2) {
$.ajax({
url: "...",
success: function (value) {
return value;
}
});
}
此处的问题是 AJAX 是异步的,因此 api_helper1 和 api_helper2 将在控制台记录 id_1 + id_2
之前运行。无需在彼此的成功函数中进行多个 AJAX 调用,最简洁的方法是什么?
最佳答案
您可以使用 Promise 来做到这一点:
function api_call() {
return $.ajax({
url: "...",
});
}
function api_helper1(id_1) {
return $.ajax({
url: "..."
});
}
function api_helper2(id_2) {
return $.ajax({
url: "..."
});
}
api_call().done((objects)=>{
for (var i = 0; i < objects.length; i++) {
$.when(api_helper1(objects[i].id_1), api_helper2(objects[i].id_2)).then((id_1, id_2)=>console.log(id_1 + id_2));
}
})
关于javascript - 如何清理 AJAX 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45849096/