我不确定我是否正确阅读了文档,但我认为 jquery 中的 $.when 将允许我进行多个异步调用,然后在done
函数的一部分中,我可以调用另一个函数。我基本上是在渲染视图之前尝试获取所有数据。有些项目在主干对象中,有些我必须使用 ajax 调用手动调用,因为没有与信息对应的主干对象。
var fetchLibraries = function () {
if (this.screen == "EDIT") {
$.ajax({
url: 'libraries',
type: "GET",
crossDomain: $.support.cors,
xhrFields: {
withCredentials: $.support.cors
},
success: function (data) {
console.log(data);
// do some processing with the data that can take some time
}
});
}
}
};
$.when(this.platforms.fetch(),
fetchLibraries()).done(function () {
self.trigger('removeOverlay');
self.render();
});
所以通常情况下,这会按我的预期工作,并且我的渲染函数在 fetchLibraries 成功回调之后被调用。有时,通常当我的服务器正在唤醒并且调用需要一段时间时,self.render() 在我完成处理 fetchLibraries 之前被调用。我在 self.render 函数和成功回调中都有一个 console.log,当它不起作用时,我基本上会在看到“数据”记录之前看到“渲染”记录。我想知道是否有办法确保 fetchLibraries 在调用渲染之前完成它的成功回调。