【发布时间】:2014-06-08 17:04:38
【问题描述】:
我有一些基于 Promise 的代码 (MyLib),我想在每个模型保存时运行,因此我扩展了保存功能:
DS.Model.extend
save: ->
parentSave = @_super.bind this, arguments...
deferred = Ember.RSVP.defer()
MyLib.func().then((val) =>
@set 'prop', val
parentSave()
.then(deferred.resolve)
.fail(deferred.reject)
)
DS.PromiseObject.create promise: deferred.promise
请注意,MyLib.func() 返回的承诺是 rsvp.js 承诺,而不是 Ember.RSVP 承诺。
这似乎在实践中有效,但我的一些测试因You have turned on testing mode, which disabled the run-loop's autorun. You will need to wrap any code with asynchronous side-effects in an Ember.run 而失败。
即使我用Ember.run 包装了@set 和parentSave 调用,我的测试中仍然存在异步问题。
我的问题是:如何使用异步代码扩展保存功能,同时满足我的测试要求?
【问题讨论】:
标签: javascript ember.js coffeescript ember-data promise