我試圖理解為什么string以下方法中的回傳型別以紅色下劃線顯示為錯誤:
exportPageAsText(pageNumber: number): string {
(async () => {
const text = await this.pdfViewerService.getPageAsText(pageNumber);
console.log(text);
return text;
})();
}
錯誤訊息顯示如下:A function whose declared type is neither 'void' nor 'any' must return a value.讓我感動return text;的出async范圍并將其放置后})();但所作的text可變無法辨認。
然后我想可能是因為方法回傳型別應該是 aPromise所以我將簽名更改為:
exportPageAsText(pageNumber: number): Promise<string>
但我收到一個新的錯誤說 A function whose declared type is neither 'void' nor 'any' must return a value.
有人可以幫我理解我做錯了什么嗎?
uj5u.com熱心網友回復:
你想使用await,所以你需要一個異步函式。您創建的是一個自呼叫異步函式。但是在自呼叫函式內回傳一個值不會為基函式回傳它。
您正在尋找的是使基本函式異步,并將回傳型別設定為Promise<string>:
async exportPageAsText(pageNumber: number): Promise<string> {
const text = await this.pdfViewerService.getPageAsText(pageNumber);
console.log(text);
return text;
}
uj5u.com熱心網友回復:
您的方法在結束之前等待回傳,但事件 async () => {... 宣告的承諾未回傳
所以有兩件事要改變你的代碼
- 回傳異步()
- 通過更改方法宣告中的回傳型別
Promise<string>
在您的案例語法中,它看起來像
exportPageAsText(pageNumber: number): Promise<string> {
return (async () => {
const text = await this.pdfViewerService.getPageAsText(pageNumber);
console.log(text);
return text;
})();
}
uj5u.com熱心網友回復:
這就是我要做的。異步/等待。
const exportPageAsText = async (pageNumber: number): Promise<string> => {
const text: string = await this.pdfViewerService.getPageAsText(pageNumber);
console.log(text);
return text;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/340932.html
標籤:javascript 打字稿 异步 异步等待
