jquery - 如何在多次 Backbone 保存后发出一个 AJAX 请求

标签 jquery ajax backbone.js

我有一种情况,我需要保存一个 Backbone 模型,然后在其成功时迭代一个集合并保存它们,然后在每次成功时迭代另一个集合并保存它们,然后在所有这些完成后执行一个AJAX 请求。这就是我所拥有的:

backboneModel.save(
    {},
    {
         wait: true,
         success: function (model1, response1)
         {
              $.each(backboneCollection1.models, function () {
                    this.save(
                        {},
                        {
                             wait: true,
                             success: function (model2, response2)
                             {
                                  $.each(backboneCollection2.models, function () {
                                       this.save(
                                           {},
                                           {
                                                wait: true,
                                                success: function (model2, response2)
                                                {
                                                     //If i put the AJAX request here it will happen for every iteration which is not desired
                                                }
                                           });
                                  });
                              }
                         });
               });
               //If i put the AJAX request here it will fire after one iteration of the first each even with async set to false on the AJAX request
         }
   });

有人对在哪里执行此 AJAX 请求有任何建议,以便在所有 Backbone 模型保存到服务器后它只触发一次吗?

最佳答案

看看这个 jsfiddle我创建。它取代了您的成功回调并使用 Promise 来保存您的模型,然后是集合 1,然后是集合 2。完成所有这些后,您可以在 did() 中进行 ajax 调用。

大部分更改是用此替换上面的内容。

var saveEverything = backboneModel.save()
.pipe(function() { return saveCollection(backboneCollection1); })
.pipe(function() { return saveCollection(backboneCollection2); });
saveEverything.done(function() { console.log('done with everything, ajax time') });//make your ajax call in the done

如果您不知道 jQuery 的 promise 是什么,this是一篇非常棒的博客文章,解释了 Promise。如果我的例子根本没有任何意义,或者只是问,我可以尝试解释正在发生的事情和正在发生的事情。

关于jquery - 如何在多次 Backbone 保存后发出一个 AJAX 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13091783/

相关文章:

JavaScript:通过从字符串中检索变量名来更新对象值

jquery - 仅使用 HTML/JS/CSS - 有没有办法以黑白方式渲染彩色图像?

jquery - 如何从node.js-express获取响应返回ajax

backbone.js - 如何更改 Backbone js View "safely"上的模型?

javascript - 访问 Google map 事件中的 Backbone.View 功能

javascript - HTML 文档中脚本标签的位置 - <head> 和 <body> 具有不同的行为

jquery - DatePicker 作为只读日历

javascript - 阻止 touchStart 但允许单击事件

jquery - 重新填充下拉列表选项,如何清除选项列表然后重新填充?

jquery - 从 MVC3 中的 Controller 向 AJAX 调用返回错误