异步/等待 - Typescript 和 ExpressJs

Ali*_*ehi 6 node.js express async-await typescript

我在 express 中遇到了 typescript 的 async/await。我有以下代码片段,它不会产生任何结果,它只是等待,就好像承诺永远不会完成一样。任何想法如何使它工作。

  ..
  router.get('/test', this.test);
  ..

  private async test(req: Request, res: Response) {
    const result = await this.test2();
    res.json(result);
  }

  private async test2() {
    return await this.test3();
  }

  private test3() {
    return new Promise((resolve) => { resolve({ "working": true }) });
  }
Run Code Online (Sandbox Code Playgroud)

更新:

如果我用下面的行更改第一行,它会起作用。任何想法为什么?

router.get('/test', (req,res)=>this.test(req,res));
Run Code Online (Sandbox Code Playgroud)

update2(固定)-基于@smnbbrv 下面的回答

 private test = async(req: Request, res: Response)=> {
    const result = await this.test2();
    res.json(result);
  }

  private test2 = async ()=> {
    return await this.test3();
  }

  private test3 = async()=> {
    return new Promise((resolve) => { resolve({ "working": true }) });
  }
Run Code Online (Sandbox Code Playgroud)

smn*_*brv 2

看起来你的“这个”在你这样通过之后就丢失了

router.get('/test', this.test);
Run Code Online (Sandbox Code Playgroud)

如果你只是this通过以下方式保留价值

router.get('/test', this.test.bind(this));
Run Code Online (Sandbox Code Playgroud)

这应该完全按照您在更新中提到的方式工作

router.get('/test', (req,res)=>this.test(req,res));
Run Code Online (Sandbox Code Playgroud)