【问题标题】:Async/Await - Typescript and ExpressJsAsync/Await - Typescript 和 ExpressJs
【发布时间】:2016-08-22 20:07:07
【问题描述】:

我正在体验 typescript 的 async/await in express。我有以下代码 sn-p 不会产生任何结果,它只是等待,就好像承诺永远不会完成一样。任何想法如何使它工作。

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

【问题讨论】:

  • 您的代码看起来不错。我尝试运行给定的 sn-p(已删除 res.json(result);)并成功等待并解决了对 test 函数的调用。你的问题一定出在其他地方。

标签: node.js express typescript async-await


【解决方案1】:

看起来你的“这个”在你这样传递后丢失了

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

如果您只是将this 值保留为

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-08
    • 2018-05-05
    • 2017-05-10
    • 1970-01-01
    • 2016-02-26
    • 2020-05-25
    • 1970-01-01
    相关资源
    最近更新 更多