[英]Synchronise promises in Ember.js
這似乎是濫用承諾或“你做錯了”的問題,如果是這樣,請糾正我。 我遇到了幾個想要同步默認在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()。然后( - > ....)”。 這意味着調用者需要知道返回了一個promise。
有沒有辦法在doSomething方法中等待,直到承諾得到解決,然后才返回?
正如您已經猜到的,這不是一個好主意。 Javascript開發是關於思考和異步工作的 ,因此您的服務的客戶端應該暴露給Promises的API。 我認為這是一個公平的要求,因為承諾是學習簡化異步編程的一個簡單概念。
這意味着調用者需要知道返回了一個promise
調用者顯然總是需要知道他們調用的函數返回什么,甚至需要知道什么參數。 所以你這里沒有問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.