我正在尝试在使用 jquery 完成 ajax 调用后执行一些操作。
我已经看到如果我使用这样的函数:
function DownloadData() {
$.ajax({
url: "/api/AlbumsRest",
accepts: "application/json",
cache: false,
success: function () {
/*binding stuff*/
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert('Error' + textStatus);
}
});
}
ajax 请求是在异步模式下完成的。我不想更改它,因为我不想卡住页面。但我想在这个 ajax 完成后做一些 Action (动画、效果等)。
所以,我的问题是,如何在不使用成功事件的情况下知道我是否处于此请求的末尾
如果我这样调用 DownloadData 函数:
function DownloadNextData() {
DownloadData();
SlideOutAnimation();
SlideInAnimation();
}
我需要在发出异步请求后制作幻灯片。
一些想法?
最佳答案
使用 jQuery Deferred Objects您应该从 DownloadData
返回
$.ajax()
的结果
function DownloadData() {
return $.ajax({...});
}
然后您可以在 AJAX 处理程序之外注册一个函数,该函数只会在 AJAX 调用完成后被调用:
function DownloadNextData() {
DownloadData().done(function() {
SlideOutAnimation();
SlideInAnimation();
});
}
看吧 - 您的动画处理与 AJAX 函数完全分离:)
为了简化事情,.done
实际上也可以获取函数引用列表:
function DownloadNextData() {
DownloadData().done(SlideOutAnimation, SlideInAnimation);
}
请注意,在这种情况下,您不能提供自己的函数参数 - 它们实际上会传递 AJAX 数据的内容。
关于javascript - jQuery ajax异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13750063/