如何中止Ember Data发出的HTTP请求?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何中止Ember Data发出的HTTP请求?相关的知识,希望对你有一定的参考价值。
我有一个必须在某些用户操作上更新(重新加载)的模型。如果其中两个动作连续快速发生,我希望第一个更新请求被中止,因为a)它的结果将过时,并且b)请求需要一些时间(因此排队这些请求也不是一个选项)。
有没有办法通过Ember Data轻松实现这一目标?
答案
我重写了应用程序适配器的ajax方法,将XMLHttpRequest对象添加到数组中。
App.ApplicationAdapter = DS.RESTAdapter.extend({
xhr: [],
ajax: function(url, type, hash) {
var adapter = this;
return new Ember.RSVP.Promise(function(resolve, reject) {
hash = adapter.ajaxOptions(url, type, hash);
hash.success = function(json) {
Ember.run(null, resolve, json);
};
hash.error = function(jqXHR, textStatus, errorThrown) {
Ember.run(null, reject, adapter.ajaxError(jqXHR));
};
adapter.xhr.push(Ember.$.ajax(hash));
}, "DS: RestAdapter#ajax " + type + " to " + url);
},
});
然后,当我想中止请求时(在这种情况下,从路由中):
this.store.adapterFor('discussion').xhr.forEach(function(xhr) {xhr.abort();});
以上是关于如何中止Ember Data发出的HTTP请求?的主要内容,如果未能解决你的问题,请参考以下文章