【发布时间】:2014-01-14 23:02:14
【问题描述】:
这似乎是对承诺的滥用或“你做错了”的问题,如果是这样,请纠正我。 我遇到了几个我想要同步在 Ember.js 中默认是异步的调用的地方。这是一个小例子:
class service extends Ember.Object
someProperty: null
doSomething: ->
#this.store was injected during initialisation
this.store.find("someModel", someSelector).then((result) =>
@someProperty = result.someField
console.log "promise fulfilled"
)
调用以下代码:
service.doSomething()
console.log "this should be second"
将导致:
"this should be second"
"promise fulfilled"
这意味着如果有人调用该方法并期望在调用返回后设置属性 someProperty ,则情况并非如此。我看到的唯一同步方法是将其称为“service.doSomething().then(-> ....)”。这意味着调用者需要知道返回了一个承诺。
有什么方法可以在 doSomething 方法中等待,直到 promise 被解决,然后才返回?
【问题讨论】:
标签: ember.js coffeescript ember-data promise synchronous