2016-04-28 64 views
2

私はtypescriptのasync/await in expressを経験しています。私は次のコードスニペットを持っていますが、それは結果をもたらさず、約束が決して終わらないように待っています。どのようにそれを動作させるためのアイデア。Async/Await - TypescriptとExpressJs

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

アップデート2(固定) -

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

あなたのコードは正常に見えるで述べたように、正確に動作するはずです。私は与えられたスニペット( 'res.json(result);'が取り除かれた状態で)を実行しようとしました。そして 'test'関数への呼び出しがうまく待って解決されました。あなたの問題はどこかにあるはずです。 – Amid

答えて

1

以下@smnbbrv回答に基づいては、のように見えるあなたのあなたがその

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

ようにそれを渡した後、 'これは' 失われます場合はの値をそのまま保存してください。

​​

これは、あなたが更新

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