Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Promise returned in function argument where a void return was expected

I'm working on an Electron application and I want to use async await in an anonymous function in my Main like this:

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

But this yields the Typescript error

Promise returned in function argument where a void return was expected.

I'm using Typescript 3.9.7 and Electron 9.2.0.

Why doesn't it allow me to use async/await?

like image 641
mottosson Avatar asked Aug 19 '20 13:08

mottosson


2 Answers

You can use an asynchronous IIFE inside the callback, like this:

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

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

This ensures that the implicit return of the callback remains undefined, rather than being a promise.

like image 90
Lionel Rowe Avatar answered Oct 22 '22 15:10

Lionel Rowe


Fixed it, I found the answer below from here

 <div
  onClick={
    () => {
      void doSomethingAsync();
    }
  }
  onClick={
    () => {
      void (async () => {
        const x = await doSomethingAsync();
        doSomethingElse(X);
      })();
    }
  }
/>
like image 1
Thanh Nhật Avatar answered Oct 22 '22 16:10

Thanh Nhật