ruby-on-rails - Ajax队列 Backbone js

标签 ruby-on-rails ajax backbone.js ruby-on-rails-3.2

我在Rails 3.2.2上运行Backbone js 0.9.2,我有一个用于添加费用行的页面。一个费用有3个TextField:标题,说明和价格。

我节省了模糊的每个成本。
model.save()以非常短的间隔多次被调用。稍后发出一个create(post)请求,然后发出一个update(put)请求。我遇到的问题是PUT请求有时在POST之前到达服务器,其结果是模型被创建并持续两次(重复)。

为了避免模糊是请求的行为,因此我需要一种将请求排队的方法。
我已经阅读了一些有关Spine js的内容,他们通过某种队列来解决它。我也查看了this,但似乎无法弄清楚。

感觉这应该是一个普遍的问题,使用“单页应用程序”,但找不到任何东西。

最佳答案

您可以覆盖save方法,并使用deferred object创建队列。例如,

var MDef = Backbone.Model.extend({
    url: "/echo/json/?delay=3",

    initialize: function() {
        this.queue = $.Deferred();
        this.queue.resolve();
    },

    save: function(attrs,options) {
        var m = this; 
        console.log("set "+JSON.stringify(attrs));

        // this.queue = this.queue.pipe with jquery<1.8
        this.queue = this.queue.then(function() {
            console.log("request "+JSON.stringify(attrs));
            return Backbone.Model.prototype.save.call(m, attrs, options);
        });            
    }
});

var m = new MDef();
m.save({title: "a title"});
m.save({description: "a description"});
m.save({price: "a price"});

和 fiddle :http://jsfiddle.net/nikoshr/8nEUm/

关于ruby-on-rails - Ajax队列 Backbone js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10000352/

相关文章:

javascript - Marionette - 初始化事件不触发

database - AJAX 聊天,使用数据库或 Windows 服务实现服务器?

javascript - 主干JS : How to call function outside view from view's events hash?

ruby-on-rails - ENOTFOUND : getaddrinfo ENOTFOUND api. heroku.com api.heroku.com:443 heroku 创建错误

ruby-on-rails - Rails - UsersController#create 中的 ArgumentError - 参数太少

javascript - 无法使用ajax加载c3图形数据

javascript - 具有 Ajax 表单提交的 AngularJS 需要单击两次

javascript - 无法从主干集合获取数据

ruby-on-rails - 如何调试 cron 不执行给定脚本或其他脚本的问题?

ruby-on-rails - ActiveRecord,哪个先来?