首页 文章

Async / Await - Typescript和ExpressJs

提问于
浏览
2

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

update:

如果我用下面的行改变第一行,它就可以了 . 有什么想法吗?

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

update2 (fixed) - based on @smnbbrv answer below

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 回答

  • 1

    看起来你的'this'就像你那样传递掉了

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

    如果您只是保留 this

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

    这应该与您在更新中提到的方式完全一致

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

相关问题