javascript - 在 Express 处理函数中使用 Async/Await 会抛出 Typescript 错误
我有这个 Express Handler 函数,它返回一个 Promise
import { Handler } from 'express'
export const fooHandler: Handler = async (_req, res) => {
await new Promise(resolve => setTimeout(resolve, 1000));
res.send('');
};
然而,这会触发这个 ESLint 错误
Promise-returning function provided to variable where a void return was expected (eslint@typescript-eslint/no-misused-promises)奇怪的是,这在我以前的项目中实际上是可行的。这条规则是最近才被添加到 ESLint 吗?
答案#1
你可以像这样使用异步 IIFE。
export const fooHandler: Handler = (_req, res) => {
(async () => {
await new Promise(resolve => setTimeout(resolve, 1000));
// rest code
})();
};
这意味着回调的返回值仍然是未定义的,而不是一个 Promise。
