gpt4 book ai didi

node.js - 异步/等待 - Typescript 和 ExpressJs

转载 作者:搜寻专家 更新时间:2023-10-30 21:10:59 25 4
gpt4 key购买 nike

我正在体验 typescript 的 async/await in express。我有以下代码片段,它不会产生任何结果,它只是等待,就好像 promise 从未完成一样。任何让它发挥作用的想法。

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

最佳答案

看起来你的'this'在你这样传递之后就丢失了

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

如果您只是通过以下方式保留 this

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

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

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

关于node.js - 异步/等待 - Typescript 和 ExpressJs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36908239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com