我正在尝试使用 Node 请求模块从第三方服务获取一些数据,并从函数中将此数据作为字符串返回。我的看法是 request()
返回可读流,因为你可以执行 request(...).pipe(writeableStream)
这 - 我认为 - 意味着我可以做
function getData(){
var string;
request('someurl')
.on('data', function(data){
string += data;
})
.on('end', function(){
return string;
});
}
但这实际上行不通。我认为我对 request() 或 Node 流的真正工作方式有一些错误的认识。有人可以在这里消除我的困惑吗?
最佳答案
它确实按照您解释的方式工作。也许您面临的问题是由于 node.js 的异步性质造成的。我很确定您正在以同步方式调用 getData()
。试试这个,看看你的 request
调用是否没有返回一些东西:
request('someurl')
.on('data', function(data){
console.log(data.toString());
.on('end', function(){
console.log("This is the end...");
});
看看这篇文章here .它并不短,但它解释了如何编写代码来处理这种情况。
关于javascript - 为什么 request.on() 在 Node.js 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24477699/