【发布时间】:2017-04-25 21:05:01
【问题描述】:
这是我执行以下函数时发生的情况,AjaxCallFive 仅在 AjaxCallFour 执行后才执行。
var ajaxOptionsFour = {
type: "GET",
url: '/Home/AjaxCallFour',
data: { value: '10' },
success: updatePage,
error: printError
};
var ajaxFive = function () {
return {
type: "GET",
url: '/Home/AjaxCallFive',
data: { value: '10', dumyContent:"" },
success: updatePage,
error: printError
}
}
var a1 = $.ajax(ajaxOptionsFour);
var a2 = a1.then(
function (data) {
// .then() returns a new promise
return $.ajax({
type: "GET",
url: '/Home/AjaxCallFive',
data: { value: '10', dumyContent: data.data },
success: function (response) { console.log(response.dumyContent) },
error: function (response) { console.log() }
});
});
a2.done(function (data) {
console.log(data.data + data.waitValue);
});
但是,如果我将 a2 变量行更改为同时调用的两个函数下面,AjaxCallFive 会在不等待 AjaxCallFour 首先执行的情况下执行。
var a2 = a1.then($.ajax(ajaxFive()));
【问题讨论】:
-
因为您正在调用 Ajax 调用并存储它返回的内容。在这种情况下,它是一个被返回的承诺。
标签: javascript ajax promise