2017-01-30 75 views
2

我試圖登錄的一份聲明中異步功能如下工作:CONSOLE.LOG不異步功能

async generateCharts (insights) { 
    const { url } = await this.reportsClient.createReport(insights) 
    console.log('url from reports', url) 
    return this.parse(url) 
} 

登錄聲明沒有顯示出來,雖然,我敢肯定,這由於異步功能。那是對的嗎?無論如何要解決這個問題?

+0

我只是跑你的代碼,它工作正常。你是否嘗試過強制'createReport'來完成驗證? –

+0

僅供參考,「異步」功能不是ES6的一部分(ES2015)。他們*將會是今年發行的一部分,ES2017。 –

+0

@MikeC看起來會是這個問題! –

回答

3

你的例子缺乏上下文,但恕我直言,這是因爲你的createReport函數從未滿足。 沒有其他原因爲什麼console.log不會被執行。

1

注意錯誤吞噬「悄無聲息」異步函數中 - 就像正常的承諾內。除非我們圍繞等待表達式添加try/catch塊 ,未捕獲的異常 - 不管它們是在異步函數主體中產生的 還是在等待期間暫停它的 - 都會拒絕由異步函數返回的promise。

javascript-async-await#error-handling