2016-11-10 38 views
1

當我使用類似爲什麼如果(asynchronous.get())工作,是確定使用這種方式

if(asynchronous.get()){...} 

而且ansynchronous.get()是一個異步功能,我不知道這一切會永遠作爲工作if語句不測試任何東西,除非該函數返回一個值。不知何故,我在我的代碼中有這個,它的工作原理,所以任何人都可以解釋爲什麼它的工作原理,如果我應該改變它。

編輯︰我假設我的功能是異步的是錯誤的,所以一切都現在回答。

+0

你能否告訴我們'的console.log(asynchronous.get())'? –

+0

例如,如果我使用'console.log(localStorage.getItem(「x」));'我將得到localStorage對象的值「x」。 –

+1

@Julius S. localStorage.getItem是一個同步函數,它將立即返回一個值。有關Promise的信息,請參閱此處:https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Promise – DevDig

回答

3

if語句只是檢查表達式是否評估爲真值。看起來函數返回一個promise,它是一個函數對象,它是一個真值。

該函數將被執行,但是您將無法以這種方式處理結果,並且if語句永遠不會被評估爲false。

你需要等待函數來解析的值,然後檢查值:

asynchronous.get().then(val => { 
    if (val) {...} 
}) 
相關問題