网站搜索

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。