gpt4 book ai didi

javascript - node.js JavaScript 中的变量不会改变

转载 作者:行者123 更新时间:2023-11-30 17:43:40 25 4
gpt4 key购买 nike

'use strict';

var http = require('http');

function simpleTest() {
var content = '';
http.get("http://google.com/", function (res) {
var html = '';
res.on('data', function (chunk) {
html += chunk;
});
res.on('end', function () {
content = html;
});
});
return content;
}

console.log(simpleTest());

为什么变量没有改变而我得到一个空字符串?

我认为第一个函数显示变量,然后才执行http.get。如何让第一个代码执行,然后函数返回一个变量?

最佳答案

因为操作是异步的。这意味着 simpleTesthttp.get() 之前很久就返回了响应到达。

任何需要响应的代码都必须在回调中调用。在您的情况下,可能会多次调用 data回调,所以你需要在 end 中处理它回调。

'use strict';

var http = require('http');

function simpleTest() {
http.get("http://google.com/", function (res) {
var html = '';
res.on('data', function (chunk) {
html += chunk;
});
res.on('end', function () {
console.log(html);
});
});
}

simpleTest();

如果您不想对 console.log() 进行硬编码,你可以把它放在一个函数中,并将函数传递给simpleTest() .这使它更加通用。

'use strict';

var http = require('http');

function simpleTest(fn) {
http.get("http://google.com/", function (res) {
var html = '';
res.on('data', function (chunk) {
html += chunk;
});
res.on('end', function () {
fn(html);
});
});
}

simpleTest(function(data) {
console.log(data);
});

所以这里我们传递了一个函数给fn参数,并调用了 fn end 里面的参数回调。

当我们调用它时,我们传递最后的 html值,回调在其 data 中接收它参数。

这些是非常常见的模式,因此最好熟悉它们。

关于javascript - node.js JavaScript 中的变量不会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20556109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com