我在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 }) });
}
答案 0 :(得分:1)
看起来像你的这个'在你传递之后丢失了
router.get('/test', this.test);
如果您只是按
保留this
值
router.get('/test', this.test.bind(this));
这应该与您在更新
中提到的方式完全一致router.get('/test', (req,res)=>this.test(req,res));