簡體   English   中英

在Ember.js中同步promises

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM