【问题标题】:how to get readStream with thunk in koa ?如何在 koa 中使用 thunk 获取 readStream ?
【发布时间】:2015-04-16 04:21:00
【问题描述】:

我想在 koa 控制器中传递一个请求,它的工作:

var s = require('through2')();
var req = http.request(url, function(res) {
  res.pipe(s);
})
req.end(null);

s.on('close', function() {
  console.log('has close');
});
this.body = s;

但是使用 thunk ,它似乎不起作用。

var s = stream(); 
yield thunk(url, s);
this.body = s;

这里是thunk

var thunk = function (url, s) {
  return function(callback) {
    var req = http.request(url, function(res) {
      res.pipe(s);
    });
    s.on('close', function() {
      callback(null, null);
      console.log('req inner close');
    });
    req.end(null);
  }
}

【问题讨论】:

    标签: node.js koa thunk co


    【解决方案1】:

    为此使用promise(返回promise,而不是thunk)。在我的脑海中,所以你可能需要玩弄它:

    function run(url, s) {
      return new Promise(function(resolve, reject) {
        var req = http.request(url, function(res) {
          res.pipe(s);
          res.on('end', function() {
            req.end();
          });
        });
    
        req.on('error', function(err) {
          return reject(err);
        });
    
        s.on('close', function() {
          console.log('req inner close');
          return resolve();
        });
      });
    }
    

    然后:

    yield run(url, s);
    

    【讨论】:

      猜你喜欢
      • 2017-05-27
      • 1970-01-01
      • 2017-02-01
      • 2021-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-28
      • 2017-08-18
      相关资源
      最近更新 更多