Async / Await – Typescript和ExpressJs
我正在用打字稿的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 }) }); }
看起来你的“这个”在你通过之后就会丢失
router.get('/test', this.test);
如果你只是保留this
值
router.get('/test', this.test.bind(this));
这应该完全按照您在更新中提到的方式工作
router.get('/test', (req,res)=>this.test(req,res));