Async / Await - Typescript和ExpressJs

时间:2016-04-28 07:37:19

标签: node.js express typescript async-await

我在express中遇到过打字稿的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 }) });
  }

1 个答案:

答案 0 :(得分:1)

看起来像你的这个'在你传递之后丢失了

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

如果您只是按

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

这应该与您在更新

中提到的方式完全一致
router.get('/test', (req,res)=>this.test(req,res));