2016-03-31 5 views
1

コードでは、どういうわけかコメント部分が "this.body = 'test';の代わりにドキュメントの本体を設定できるように変更したいと思います;" (それはまだプロミスの解決策でなければならない)。Promise内のボディを設定するには?

'use strict' 

var app = require('koa')(), 
    router = require('koa-router')(); 

router.get('/', function *(next) { 
    this.body = 'test'; 
    // var promise = new Promise(function(resolve, reject) { 
    // resolve("test"); 
    // }); 
    // promise.then(function(res){ 
    // this.body = res; 
    // }) 
}); 

app 
    .use(router.routes()) 

app.listen(8000); 

問題は、プロミス内の「this」が「正しいもの」と呼ばれていないことです。

+0

ドキュメントの本体がクライアント側である場合は、テンプレートエンジンを使用して、変更する変数を ''のレイアウトに送信する必要があります。 –

答えて

3

これはHow to access the correct `this` context inside a callback?の複製とよく似ていますが(ソリューションではコールバックの矢印機能が使用されています)、実際にコールバックはkoa(およびco)では必要ありません。あなたは約束を得ることができます!

router.get('/', function*(next) { 
    this.body = 'test'; 
    var promise = Promise.resolve("test"); 
    var res = yield promise; 
    this.body = res; 
}); 
関連する問題