在下面的例子中,我创建了一个严格接受参数并进行ajax调用然后返回结果的函数。问题是,由于AJAX请求是异步的,我依赖返回值的其余JavaScript继续运行。在下面的另一个函数中调用anotherFunction()。
在返回expirDates之前,是否有任何技术不能在anotherFunction()中运行剩余的代码?我知道我可以直接将ajax调用放在anotherFunction()中然后在ajax成功函数中编写我的其余代码,但我想让ajax请求可重用..
function GetExpirationDates(end, start) {
var data = {
end: end,
start: start
}
$.ajax({
type: 'POST',
url: '@Url.Action("GetExpirationDates", "Products")',
data: data,
dataType: 'json',
success: function (data) {
// Success logic goes here here
return data;
}
});
}
function anotherFunction() {
// code here...
var expirDates = GetExpirationDates(end, start);
// more code here that continues to run, but relies on expirDates...
}
答案 0 :(得分:1)
尝试在return
中使用GetExpirationDates
语句,使用.then()
链接到expirDates
,以便在GetExpirationDates
function GetExpirationDates(end, start) {
var data = {
end: end,
start: start
}
// return jQuery promise object from `GetExpirationDates`
return $.ajax({
type: 'POST',
url: '@Url.Action("GetExpirationDates", "Products")',
data: data,
dataType: 'json'
});
}
function anotherFunction() {
// code here...
var expirDates = GetExpirationDates(end, start);
// more code here that continues to run, but relies on expirDates...
expirDates.then(function(data) {
// do stuff with `data`
}, function error(err) {
// handle errors from `$.ajax()`
})
}