我怎样才能使用" http"在koa的模块?

时间:2016-03-31 22:00:18

标签: javascript node.js koa

我正在尝试使用koajs框架在节点上使用http.request。有没有办法可以在下面显示它?

var http = require('http');

var result = yield http.request(options);

1 个答案:

答案 0 :(得分:1)

大概你遇到的问题是http.request接受回调而不是回复承诺,所以你不能{k}来yield。您需要将http.request包装在一个返回promise的函数中,并将promise resolve挂钩到回调中,同时还将promise promise挂钩到错误处理程序中。

function request(opts, body) {
  return new Promise((resolve, reject) => {
    body.pipe(http.request(opts, resolve))
    .on('error', reject);
  });
}

...稍后在你的koa函数......

var response = yield request(opts, body);

有很多可能的变化,我无法接近列出所有这些,但这是基本的想法:)