在jquery的ajaxSuccess之前调用了Backbone的成功回调

时间:2015-06-17 19:34:15

标签: jquery ajax backbone.js callback

我想确保在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回调中所需的数据

2 个答案:

答案 0 :(得分:1)

您所展示的内容并不一定意味着Backbone调用早于ajax成功回调。它可能是ajax成功首先被称为。然后立即调用骨干回调。那么它取决于哪一个更快,一个先记录得越快。

这意味着在ajaxsuccess完成后不会调用骨干回调。

在您的情况下,您希望在传入模型之前预处理ajax。这很常见。实际上,Backbone确实有本机支持。检查Backbone.parse方法。它默认是空的,但您当然可以修改它以更改响应。

答案 1 :(得分:1)

在获取成功时,尝试将要执行的代码放在setTimeout为0。

这应该在其他事情发生后立即执行。

注意,我更喜欢使用解析,因为evilsanta建议。这更多地是关于你能做什么而不是必然要做的事情。