Ajax队列Backbone js
我在Rails 3.2.2上运行Backbone js 0.9.2,我有一个页面用于添加成本行。一个成本有3个TextFields:标题,描述和价格。
我节省了模糊的每个成本。
model.save()
以非常短的间隔多次调用。 哪个问题create(post)
请求然后在那之后不久create(post)
一个update(put)
请求。 我遇到的问题是PUT请求有时会在POST之前到达服务器,结果是模型被创建并持久两次(重复)。
为了节省模糊是请求的行为,所以我需要一种方法来排队请求。 我已经读过关于Spine js的东西,并且他们通过某种队列来解决它。 我也看过这个 ,但似乎无法弄清楚这一点。
感觉这应该是一个常见的问题,使用“单页应用程序”但无法找到任何相关信息。
您可以覆盖save方法并使用延迟对象创建队列。 例如,
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"});
还有一个小提琴: http : //jsfiddle.net/nikoshr/8nEUm/
用户从underscore.js debounce
。
创建并返回传递函数的新去抖版本,该版本将推迟执行,直到自上次调用后经过等待毫秒。
这样它只会在最后一次blur
事件后触发一次。
- Ruby on Rails阻止Turbolinks劫持AJAX操作
- Rails:使用控制器呈现js.erb模板
- 使用带远程的ajax的Ruby表单:true给出了ActionController :: InvalidAuthenticityToken错误。 经典提交没有
- 在Rails中使用ajax渲染查询
- Rails 3:未定义的方法`remote_form_for’
- counter_cache没有在ajax中更新
- 如何在进行ajax调用后从控制器呈现部分
- 如何做一个Ajax GET请求从rails获取数据并将其传递给javascript(谷歌地图)?
- 如何通过jquery / ajax作为JSON对象将数据发送和存储到rails?