Javascript 函数参数中返回的承诺,预期返回无效

Javascript 函数参数中返回的承诺,预期返回无效,javascript,typescript,electron,Javascript,Typescript,Electron,我正在开发一个Electron应用程序,我想在Main中的匿名函数中使用async await,如下所示: process.on("uncaughtException", async (error: Error) => { await this.errorHandler(error); }); process.on("uncaughtException", (error: Error) => { (async () => {

我正在开发一个Electron应用程序,我想在Main中的匿名函数中使用async await,如下所示:

process.on("uncaughtException", async (error: Error) => {
  await this.errorHandler(error);
});
process.on("uncaughtException", (error: Error) => {
  (async () => {
    await this.errorHandler(error);

    // ...
  })();
});
但这会产生类型脚本错误

函数参数中返回的承诺,其中无效返回为 预料之中

我使用的是Typescript 3.9.7和Electron 9.2.0


为什么它不允许我使用async/await?

您可以在回调中使用异步函数,如下所示:

process.on("uncaughtException", async (error: Error) => {
  await this.errorHandler(error);
});
process.on("uncaughtException", (error: Error) => {
  (async () => {
    await this.errorHandler(error);

    // ...
  })();
});

这确保了回调的隐式返回保持未定义,而不是承诺。

异步函数总是返回承诺,因此不能在需要空函数的地方传递。为什么不直接调用错误处理程序呢?你在等待什么?一般来说,不要将
async
函数传递给那些不会使用它们返回的承诺的东西。TypeScript正在帮助您避免使用此错误执行此操作。只需确保正确处理拒绝承诺。除了删除eslint错误之外,还有什么好的理由这样做吗?@Henrique Bruno从功能上说,没有。从语义上说,是的-它清楚地表明这是一个“开火并忘记”的信号操作,回调本身不会对异步代码做任何特殊的处理(不会等待它,也不会对结果做任何处理)。@LionelRowe Simple and mind expansing answer。谢谢但是,我将禁用此ESLint规则,因为我认为启用它会为我的使用增加不必要的复杂性和详细程度。