gpt4 book ai didi

javascript - 从回调返回值

转载 作者:行者123 更新时间:2023-11-28 18:43:31 26 4
gpt4 key购买 nike

我希望能够使用简单的 var myVar = myFunction(); 设置一个变量但 myFunction 内部有一个回调,因此无法返回值。我有点不知道如何转换这段代码以便能够从回调返回一个值,以便我可以保留简单的变量定义。

#!/usr/bin/node
"use strict";
var http = require('http');

var myHappyVar = getTheData();
console.log(myHappyVar);

///// Functions /////
function getTheData() {
var data = '';
var options = {
host: 'google.com',
port: 80,
method: 'GET'
}

http.request(options, function(res) {
res.on('data', function (chunk) {
data += chunk;
});
res.on('end', function(){
console.log("DATA: " + data);
return data;
});
}).end();

}

最佳答案

你不能。 AJAX 请求是异步的,并且它们的回调在请求完成之前不会运行。那将是在将来,在 getTheData() 函数完成之后。

您将需要重组您的代码。您可以向 getTheData() 传递一个回调,以便在数据准备好后运行,但您不能让它返回任何内容。

function getTheData(callback) {
var data = '';
var options = {
host: 'google.com',
port: 80,
method: 'GET'
}

http.request(options, function(res) {
res.on('data', function (chunk) {
data += chunk;
});
res.on('end', function(){
console.log("DATA: " + data);
if(typeof callback === 'function'){
callback(data);
}
});
}).end();

}

然后你可以这样做:

getTheData(function(myHappyVar){
console.log(myHappyVar);
});

关于javascript - 从回调返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35757962/

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