Ali*_*ehi 6 node.js express async-await typescript
我在 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 }) });
}
Run Code Online (Sandbox Code Playgroud)
更新:
如果我用下面的行更改第一行,它会起作用。任何想法为什么?
router.get('/test', (req,res)=>this.test(req,res));
Run Code Online (Sandbox Code Playgroud)
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 }) });
}
Run Code Online (Sandbox Code Playgroud)
看起来你的“这个”在你这样通过之后就丢失了
router.get('/test', this.test);
Run Code Online (Sandbox Code Playgroud)
如果你只是this通过以下方式保留价值
router.get('/test', this.test.bind(this));
Run Code Online (Sandbox Code Playgroud)
这应该完全按照您在更新中提到的方式工作
router.get('/test', (req,res)=>this.test(req,res));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2754 次 |
| 最近记录: |