1

显然,这里的原因是因为 的异步性质on('data'),以及使用 yield 的组合,但是我怎样才能使它工作呢?我试过“thunkifying” _this.req.on,但无济于事。我仍然掌握了生成器、yield 和 thunk 的窍门,但我在这里有点难过。

有没有其他聪明的解决方案而不需要另一个模块依赖

var thunkify = require('thunkify');
var request = thunkify(require('request'));

//...

if (['GET', 'DELETE'].indexOf(_this.req.method) === -1) {
        _this.req.on('data', function(chunk) {
            options.json = chunk.toString();
        });
    }

//...

var resp = yield request(options);
_this.body = resp[0].body;
4

1 回答 1

0

我能够通过使用co-body模块来完成这项工作。这是一个例子:

var thunkify = require('thunkify');
var request = thunkify(require('request'));
var parse = require('co-body');

//...

if (['GET', 'DELETE'].indexOf(_this.req.method) === -1) {
        options.json = yield parse.json(_this.req);
    }

//...

var resp = yield request(options);
_this.body = resp[0].body;

但是,我不喜欢每次我必须做某事时都需要另一个模块的事实。有人有更好的吗?

于 2014-07-14T19:57:04.970 回答