2017-07-24 169 views
-2

我有以下問題。我需要從REST服務器返回值。一切都很好,我得到了我想要的東西,但是有一個小問題。異步不起作用,我不知道爲什麼。我會通過圖像向您展示我的代碼和結果。承諾然後不工作異步?

代碼

Title

並導致鉻

enter image description here

爲什麼不工作,我想工作?當然,結果應該已經 1/2 然後3.感謝所有幫助

js代碼

ngOnInit() { 
    this.error = this.getBlockedText(); 
} 
private getBlockedText(): string { 
    let customTxt; 
    this.proxy.core.getUISettings({}).then(res => { 
      customTxt = res; 
      console.log('1'); 
    }).catch(err => { 
     console.log('2'); 
    }) 
    console.log('3'); 
    return customTxt; 
} 
+0

請複製粘貼你的代碼,而不是...這將幫助我們幫助你 – Salketer

+1

不要將代碼發佈爲圖像。 – hindmost

+1

此外,你隱藏你的代碼中唯一有趣的部分... – Salketer

回答

4

異步工作不

是的,這是。

爲什麼它不工作,因爲我想工作?

因爲您希望它同步工作並且它是異步的。

當然,結果本來應該是1/2 3.然後

如果你想要的承諾,以解決然後顯示1 然後顯示2 然後顯示3 ... ...你有把它們中的每一個(包括3)都放在then()句柄中。

目前,您已將3直接寫入異步函數開始的代碼之後,因此它在異步函數完成之前就會運行。

+0

另外,我會注意到承諾本身應該返回而不是一個值,這將會得到明確的方式 – Salketer

-1

如果您有關於異步調用的問題,請參閱此 link。最後一部分在異步調用之前運行,所以你的問題