2016-03-31 60 views
1

在代碼下面,我想以某種方式改變註釋部分應該能夠設置文檔的body而不是「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); 

問題是Promise中的「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; 
});