javascript - 如何获取 http.get 的值?

标签 javascript node.js

我想我对 JavaScript 的范围感到困惑。当我尝试使用以下代码(使用 Node.js)时,我无法从第二个“console.log()”获得任何输出。在这个程序中,我认为 value variable 在执行 http.get() 之后应该有一些值,因为 value variable 在全局范围内。但返回值与我的预期相反。

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() 的执行,如下所示。但我仍然有同样的问题。我想知道如何获得值(value)。

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 , 之前 value已设置。与此同时,我不知道你的回调是否真的被调用了。尝试添加一些额外的 console.log语句以确保您的执行流程符合您的预期。

关于javascript - 如何获取 http.get 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6654066/

相关文章:

javascript - Spring MVC : No handler found for portlet request: mode 'view' ,阶段 'Resource_PHASE'

javascript - 如何从 webview 打开 safari 移动应用程序中的链接

node.js - Firebase 函数仅返回 null

python - 无法读取从 Python 发送的 Node.js 中的 Base64 编码图像

javascript - 找不到正则表达式的错误

javascript - MeteorJS Iron Router 安装崩溃应用程序

javascript - 侧边栏 DOM 与 Navbar 重叠,将其从 DOM 中移除

node.js - npm install 停止工作

node.js - 使用 Node.js 和 Express 的 Twitter Bootstrap LESS

node.js - 如何在 Sequelize 中连接列?