首先,我想解釋一下,我已經閱讀了很多答案,並且我明白阻止線程等待響應是錯誤的。但是我有一個問題不是很容易解決。等待承諾Angular 2
我有一個高級項目,我有一個會話服務的功能,它是getAuthenticationKey():string
我用它從代碼的不同部分(調用休息功能等),我做了很多普通函數,因爲我認爲這個值將會存在或不存在。
現在我們做了一些更改,如果需要,getAuthenticationKey
將不得不調用rest函數來刷新密鑰。
所以問題是,我明白最好的辦法是做出承諾並重構整個項目,但這在數小時內太昂貴了,因爲我必須爲該功能做出承諾,並且所有其他依賴該功能(幾乎所有的應用程序),並考慮到刷新操作完成得很快,一天或一週被調用一次,有什麼辦法解決這個問題,而不重構所有的項目?
我必須刷新getAuthenticationKey中的密鑰,所以我必須等待函數中的新密鑰,沒有其他方式來等待響應? –
您可以使用同步XhrRequest,但它已被棄用https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Synchronous_and_Asynchronous_Requests這樣可以避免使用Promise。也許如果你寫了爲什麼你不能在後臺刷新授權密鑰,它可能有助於找到解決方案。 –
事實上,我需要'getAuthenticationKey'返回一個有效的密鑰(對照休息操作進行檢查)而不必做出承諾。所以我不必重構整個項目。如果我知道在創建'getAuthentitacionKey'函數時必須檢查有效性,否則我會用一個承諾來完成,但現在是做重構的噩夢。 –