【发布时间】:2017-08-24 14:55:56
【问题描述】:
我有以下设置,我的 main() 函数进行 AJAX 调用并在 SUCCESS 中调用 getValue1() 和 getValue2()。我正在学习如何使用关键字 async 和 await
根据这个SO post 和这个开发者manual,下面的代码应该可以工作。然而,事实并非如此。谁能告诉我为什么?
async function main() {
$.ajax({
url: "...",
success: function (object) {
var html = '';
for (var i = 0; i < object.length; i++) {
var value1 = await getValue1(object[i].value1);
html += '<p>' + value1 + '</p>';
var value2 = await getValue2(object[i].value2);
html += '<p>' + value2 + '</p>';
console.log(html);
}
}
});
}
function getValue1(value1) {
$.ajax({
url: "...",
success: function (value1) {
return value1;
}
});
}
function getValue2(value2) {
$.ajax({
url: "...",
success: function (value2) {
return value2;
}
});
}
【问题讨论】:
-
据我所知,您需要返回一个 Promise 才能使 async/await 正常运行。这段代码没有这样做。
-
^^^ 在你的 getValue 方法中在 $.ajax 前面加上一个 return。
-
@Taplar 你能用你的方法添加答案吗
-
@tadman 你能用你的方法添加答案吗
-
并不是说你必须用
async关键字标记函数才能在里面使用await。我的意思是你作为成功回调传递的那个。
标签: javascript jquery ajax asynchronous async-await