我试图理解为什么以下方法中的返回类型 string
用红色下划线表示错误:
exportPageAsText(pageNumber: number): string {
(async () => {
const text = await this.pdfViewerService.getPageAsText(pageNumber);
console.log(text);
return text;
})();
}
错误消息显示:声明类型既不是“void”也不是“any”的函数必须返回一个值。
所以我把 return text;
移出了async
范围并将其放在 })();
之后,但这使得 text
变量无法识别。
然后我想可能是因为方法返回类型应该是 Promise
所以我将签名更改为:
exportPageAsText(pageNumber: number): Promise<string>
但我收到一个新错误,提示 声明类型既不是“void”也不是“any”的函数必须返回一个值。
有人可以帮我理解我做错了什么吗?
最佳答案
您想使用 await
,所以你需要一个异步函数。您创建的是一个自调用异步函数。但是在自调用函数内部返回一个值并不会为基函数返回它。
您正在寻找的是使基本函数异步,并将返回类型设置为 Promise<string>
:
async exportPageAsText(pageNumber: number): Promise<string> {
const text = await this.pdfViewerService.getPageAsText(pageNumber);
console.log(text);
return text;
}
关于javascript - TypeScript 中的 async/await 和 promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69764427/