javascript-使http.request返回未定义
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-使http.request返回未定义,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1554字,纯文字阅读大概需要3分钟。
内容图文
![javascript-使http.request返回未定义](/upload/InfoBanner/zyjiaocheng/658/3244587321a0408ab5ddb0105f12a36b.jpg)
我只是从Node.js开始.我有一个关于http.request的基本问题.我想编写一个JavaScript模块,其中包含几个函数,这些函数从几个服务器返回一些数据.
这是代码:
var mod = (function() {
var my = {};
var options = {
hostname: 'example.com'
};
var foo = '';
my.getBar = function() {
var req = http.request(options, function(res) {
res.setEncoding('utf8');
res.on('data', function (chunk) {
// example.com returns JSON
// TODO need to be able to get foo from outside this module
foo = JSON.parse(chunk).bar;
});
});
req.end();
}
return my;
}());
为了获得酒吧,我这样做:
console.log(mod.getBar());
但我不确定.我认为正在发生异步操作..get请求发生了,并且在发生请求的同时,我尝试打印尚未收到的结果?我想我需要使其同步或其他?
非常感谢.
解决方法:
如果您查看getBar,则不会返回任何内容.这就是为什么您不确定的原因.要获得结果,您必须向getBar发送回调:
getBar = function (callback){...
并以结果结尾调用回调:
res.on('end, function(){
callback(foo);
});
另外,我建议您将foo放入getBar的闭包中,以防您同时执行多个请求.同样,如果响应对于一个块来说太长,您应该只将数据上的块连接起来并在最后解析它.
最后,您的代码应如下所示:
var mod = (function() {
var my = {};
var options = {
hostname: 'example.com'
};
my.getBar = function(callback) {
var foo = '';
var req = http.request(options, function(res) {
res.setEncoding('utf8');
res.on('data', function (chunk) {
foo += chunk;
});
res.on('end', function () {
callback(null, JSON.parse(foo).bar); // The null is just to adhere to the de facto standard of supplying an error as first argument
});
});
req.end();
}
return my;
}());
得到这样的酒吧:
mod.getBar(function(err, data) {
console.log(data);
});
内容总结
以上是互联网集市为您收集整理的javascript-使http.request返回未定义全部内容,希望文章能够帮你解决javascript-使http.request返回未定义所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。