Как установить тело внутри Обещания?
В приведенном ниже коде я хотел бы, чтобы каким-то образом измененная прокомментированная часть могла устанавливать тело документа вместо "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);
Проблема в том, что "это" внутри Обещания не относится к "правильному".
1 ответ
Решение
Это звучит как дубликат Как получить доступ к правильному контексту this в обратном вызове? (решение использует функцию стрелки для обратного вызова), но на самом деле эти обратные вызовы вообще не нужны с koa (и co). Вы можете просто дать обещание!
router.get('/', function*(next) {
this.body = 'test';
var promise = Promise.resolve("test");
var res = yield promise;
this.body = res;
});