如何获取http.get的值
How can I get values of http.get?
我想我对JavaScript的作用域感到困惑。当我尝试以下代码(使用Node.js(时,我无法从第二个">console.log(("中获得任何输出。在这个程序中,我认为执行http.get((后,值变量应该有一些值,因为的值变量在全局范围内。但回报价值与我的预期相悖。
var http = require('http');
var options = {
host: "www.example.com",
path: "/index.html",
port: 80
};
var value = "";
var ret = http.get(options, function(res) {
res.on("data", function(chunk) {
value += chunk;
});
res.on("end", function(chunk) {
console.log(value); // have some value...
})
});
console.log(value); // don't have any value...why?
我想知道发生了什么事。提前谢谢!
(以下文本为补充(
非常感谢三个人给了我答案!我使用setTimeout延迟了第二个console.log((的执行,如下所示。但我仍然有同样的问题。我想知道如何才能获得价值。
var http = require('http');
var options = {
host: "www.example.com",
path: "/index.html",
port: 80
};
var value = "";
var ret = http.get(options, function(res) {
res.on("data", function(chunk) {
value += chunk;
});
res.on("end", function(chunk) {
console.log("first: " + value); // have some value...
})
});
setTimeout(function() {
console.log("second: " + value); // don't have any value...why?
}, 5000);
您在http.get
上定义了一个回调函数,然后通过执行,因此执行最终的console.log
,设置为BEFORE value
。与此同时,我不知道你的回拨是否真的被呼叫了。尝试添加一些额外的console.log
语句,以确保您的执行流符合您的期望。
这里的关键是异步回调。
发生的情况是调用function(res) {...}
,当http.get
完成时,它将向value
添加值。然而,在http.get
之后,当它还没有被填充时,它将记录value
。
所以基本上,
- 调用
http.get
- 调用
console.log
http.get
结束,调用function(res) {...}
http请求是异步的。第二个console.log(((其中变量value
没有值(实际上是在请求返回之前调用的,因此,它具有与初始化时相同的值。
相关文章:
- 如何将PHP get查询转换为Meteor's HTTP.get()
- Angularjs http.get() Cross-Origin 请求被阻止
- Angular js http get返回所有页面
- Angular.js-$http.get-使用文件中的缓存
- 当我在chrome中切换设备模式时,$http.get请求失败
- Angular http.get没有'我不喜欢在开头和结尾加方括号的文本文件
- 从javaspring方法管理http.get响应
- 我可以在React应用程序中使用什么作为Angular的等价物;s$http.get
- 如何让foreach循环等待$http.get完成后再继续
- Angular Cross Origin Request CORS失败,但节点http.get()成功返回
- 使用$http.get()-OAuth身份验证下载带有Angular的远程文件
- $http GET URL更改并查找错误的资源
- angularJS $http.get communicating with API
- 在AngularJS中使用$http.get检索JSON时出现错误400
- AngularJS $http GET 请求到本地 JSON 文件返回语法错误:意外令牌]
- 使用角度$http.get从服务器下载文件
- AngularJS或JQuery解析错误格式的JSON(http get)
- AngularJS HTTP Get 没有得到响应
- 无法在角度 js 中将参数传递给 http get 请求
- Meteor:使用HTTP.get从客户端访问网站(CORS错误)