【发布时间】:2014-10-23 18:47:23
【问题描述】:
我们的应用程序中有一个导入过程,由服务器在后台处理,但由用户在我们的 Ember 应用程序中启动。如果转换后导入过程尚未完成,我想发回 202 响应并让 Ember 在 500 毫秒内重试请求。
我想使用 Ember 的内部功能来处理这个问题(加载路线和常规模型设置器),所以我尝试覆盖 RESTAdapter.ajax 方法。我目前在尝试加载路线时遇到一般错误Error while processing route: import。我怎样才能实现这种行为?
App.ApplicationAdapter = DS.ActiveModelAdapter.extend
ajax: (url, type, options) ->
adapter = this
new Ember.RSVP.Promise((resolve, reject) ->
hash = adapter.ajaxOptions(url, type, options)
hash.success = (json, textStatus, jqXHR) ->
# begin modifications
if jqXHR and jqXHR.status is 202
return Ember.run.later adapter, (->
this.ajax(url, type, options)
), 500
else
# end modifications
return Ember.run null, resolve, json
hash.error = (jqXHR, textStatus, errorThrown) ->
Ember.run null, reject, adapter.ajaxError(jqXHR)
Ember.$.ajax hash
, "DS: RESTAdapter#ajax " + type + " to " + url)
【问题讨论】:
-
假设这是 CS - 请将其标记为 coffeescript。
标签: ajax ember.js coffeescript ember-data promise