我正在体验 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/