Javascript 函数参数中返回的承诺,预期返回无效
我正在开发一个Electron应用程序,我想在Main中的匿名函数中使用async await,如下所示: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 () => {
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规则,因为我认为启用它会为我的使用增加不必要的复杂性和详细程度。