【发布时间】:2016-03-31 22:00:17
【问题描述】:
我正在尝试使用 koajs 框架在节点上使用 http.request。有没有办法可以使用它,如下所示?
var http = require('http');
var result = yield http.request(options);
【问题讨论】:
标签: javascript node.js koa
我正在尝试使用 koajs 框架在节点上使用 http.request。有没有办法可以使用它,如下所示?
var http = require('http');
var result = yield http.request(options);
【问题讨论】:
标签: javascript node.js koa
大概您面临的问题是http.request 接受回调而不是返回承诺,因此您不能从koa 中yield 它。您需要将http.request 包装在一个返回promise 的函数中,并将promise resolve 挂钩到回调中,同时还将promise reject 挂钩到错误处理程序中。
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);
这方面有很多可能的变体,我无法将它们全部列出,但这是基本思想:)
【讨论】: