Как установить тело внутри Обещания?

В приведенном ниже коде я хотел бы, чтобы каким-то образом измененная прокомментированная часть могла устанавливать тело документа вместо "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;
});
Другие вопросы по тегам