我被困在一个地方。 我想要做的是我的2个函数,它们都是异步运行的。所以我发现jquery什么时候完成,并考虑使用它。
请参阅下面的我正在使用的代码: -
$.when(doOne(42, PersonId))
.done(function (strDisplayMessage) {
doTwo()
})
function doOne(systemMessageId, personId) {
/* This function is used to make an AJAX call to the backend function to get all the customized system message. */
$.ajax(
{
url: "/Communications/GetSpecifiedSystemMessageAndCustomizeIt",
type: "POST",
data: { intSystemMessageId: systemMessageId, guidPersonId: personId },
dataType: "text",
success: function (data) {
return data;
},
error: function (error) {
return "Error!";
}
});
}
function doTwo(){
...//do something
}
但他们仍然异步运行。 有人可以帮我吗?
感谢名单
答案 0 :(得分:5)
您需要从doOne
$.when(doOne(42, PersonId))
.done(function (strDisplayMessage) {
doTwo()
})
function doOne(systemMessageId, personId) {
/* This function is used to make an AJAX call to the backend function to get all the customized system message. */
return $.ajax(
{
url: "/Communications/GetSpecifiedSystemMessageAndCustomizeIt",
type: "POST",
data: { intSystemMessageId: systemMessageId, guidPersonId: personId },
dataType: "text",
success: function (data) {
return data;
},
error: function (error) {
return "Error!";
}
});
}
答案 1 :(得分:0)
return
函数中$.ajax
的结果需要doOne
:
function doOne(...) {
return $.ajax({
...
});
}
如果没有明确的return
,该函数会将undefined
返回$.when()
,这将导致它立即触发.done
处理程序。