javascript - TypeScript 中的 async/await 和 promise

标签 javascript typescript asynchronous async-await

我试图理解为什么以下方法中的返回类型 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/

相关文章:

javascript - 使用 JQuery mousemove 函数时留在 DIV 中

typescript - 如何使用 Typescript 定义对象数组?

javascript - TypeScript 从另一个项目/模块导入类?

javascript - 带有异步 : false and return data 的 jQuery Ajax

c# - 在 C# 中停止线程

javascript - 好友列表发挥作用

javascript - 为什么这个javascript 'If... Else...'语句中没有比较语句

javascript - 处理 javascript 对象

html - 在 Angular HTML 中使用导入的 Typescript 函数

c# - IDbCommand 接口(interface)中缺少异步功能