Async / Await – Typescript和ExpressJs

我正在用打字稿的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 }) }); } 

更新:

如果我改变第一行与下面的行,它的作品。 任何想法为什么?

 router.get('/test', (req,res)=>this.test(req,res)); 

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 }) }); } 

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

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

如果你只是保留this

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

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

 router.get('/test', (req,res)=>this.test(req,res));