我想确保在Backbone的成功之前调用jQuery的ajaxSuccess回调,但事实并非如此。我想要这个
someModel.fetch({ success: function() {
console.log('2');
} });
$(document).ajaxSuccess(function(event, xhr, ajaxOptions) {
console.log('1');
});
记录1, 2
而非2, 1
。原因是我使用ajaxSuccess
预先过滤响应并保存Backbone回调中所需的数据
答案 0 :(得分:1)
您所展示的内容并不一定意味着Backbone调用早于ajax成功回调。它可能是ajax成功首先被称为。然后立即调用骨干回调。那么它取决于哪一个更快,一个先记录得越快。
这意味着在ajaxsuccess完成后不会调用骨干回调。
在您的情况下,您希望在传入模型之前预处理ajax。这很常见。实际上,Backbone确实有本机支持。检查Backbone.parse方法。它默认是空的,但您当然可以修改它以更改响应。
答案 1 :(得分:1)
在获取成功时,尝试将要执行的代码放在setTimeout为0。
中这应该在其他事情发生后立即执行。
注意,我更喜欢使用解析,因为evilsanta建议。这更多地是关于你能做什么而不是必然要做的事情。