我正在尝试使用koajs框架在节点上使用http.request。有没有办法可以在下面显示它?
var http = require('http');
var result = yield http.request(options);
答案 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);
有很多可能的变化,我无法接近列出所有这些,但这是基本的想法:)