我有一個角度單頁應用程序。通過上下文服務可以獲得全局可用狀態。解決所有已解決的承諾中的新數據
這方面的服務有get和set方法。 get方法是一個承諾,因爲在頁面加載後上下文尚未設置,但是通過API獲取。
一旦上下文建立的承諾得到解決,我可以通過存取權限get方法我的上下文。
但是我怎麼能對付的設置方法。可以使用set方法更改上下文。但是由於promise已經解決了,get方法將返回舊的上下文。
是否有可能「替代」的數據上,然後調用該承諾的回報後,它已經解決了?
謝謝!
我有一個角度單頁應用程序。通過上下文服務可以獲得全局可用狀態。解決所有已解決的承諾中的新數據
這方面的服務有get和set方法。 get方法是一個承諾,因爲在頁面加載後上下文尚未設置,但是通過API獲取。
一旦上下文建立的承諾得到解決,我可以通過存取權限get方法我的上下文。
但是我怎麼能對付的設置方法。可以使用set方法更改上下文。但是由於promise已經解決了,get方法將返回舊的上下文。
是否有可能「替代」的數據上,然後調用該承諾的回報後,它已經解決了?
謝謝!
get方法是一個承諾......
這並沒有太大的意義。我假設它返回一個承諾。
但是我怎麼能對付的設置方法。可以使用set方法更改上下文。但是由於promise已經解決了,get方法將返回舊的上下文。
代碼不應該保持和重用老許這樣。例如,你建議:
var p = object.getThePromise();
p.then(function(value) {
// ...use the value...
});
// later - this is the bit that's wrong
p.then(function(value) {
// ...use the value...
});
它不應該這樣做。如果它稍後再次需要該值(如果它需要一個新值),它應該返回到getThePromise
。
是否有可能'替代'數據承諾答覆後,然後調用已解決?
否。承諾合同的一個重要部分是承諾只能定期一次,而且結算價值不會改變。
很難說沒有看到您的API,但如果API給人的印象是可以調用「獲得」,然後重新使用所產生的承諾,最好是更改API,使其不再給出該印象。但是,如果沒有API的具體細節,很難說這是否是這種情況,或者提出改變。
不,這是不可能的。代碼已經運行,在這種情況下,你必須存儲回調函數並再次調用它。 – Robin
你可以使用rxjs流subscribe然後,只要有新的數據可用,你的回調被調用, – xelilof
代碼價值1024字。顯示你正在做什麼的[mcve]。 –