gpt4 book ai didi

javascript - NodeJS 中嵌套函数的返回值

转载 作者:行者123 更新时间:2023-11-28 19:22:29 24 4
gpt4 key购买 nike

我正在尝试从 Nodejs 应用程序中的函数内部函数返回值。它总是显示为未定义。

var geo = {
list: function(callback){
var returnval;
gapi.getcodes(function(error, data) {
if (error) {
console.log(error);
} else {
returnval = data;
console.log(returnval);
}
});
callback(returnval);
}
}

var geocodes = geo.list(function(){});
console.log("Value of geocodes: "+geocodes);

我知道gapi.getcodes是异步函数,我在另一个thread上读到我应该传递回调函数来获取返回值。但地理编码的值(value)仍然是未定义的。

当代码运行时,我看到返回的值

console.log(returnval)

。如何将此值存储在 var 中?

我不知道出了什么问题。请帮助我尝试学习 javascript 和对象样式模式。

最佳答案

geo.list() 不会返回您的答案。事实上,该函数不会返回任何内容,因此 geocodes 将按照您的方式未定义。

相反,需要修改 geo.list() ,以便将 data 值作为参数传递给回调,因为仅当异步 getcodes 回调被调用时 future 才是真正可用的数据。

因此,您可以通过在回调函数本身中使用结果来使用它(这就是它的用途):

var geo = {
list: function(callback){
gapi.getcodes(function(error, data) {
if (error) {
callback(error);
} else {
callback(null, data);
}
});
}
}

geo.list(function(err, geocodes){
// because the result here is asynchronous, you can ONLY use it
// in this callback or in any function you pass it to from here
if (!err) {
console.log("Value of geocodes: "+geocodes);
}
});

实际上,还可以做得更简单:

var geo = {
list: function(callback){
gapi.getcodes(callback);
}
}

geo.list(function(err, geocodes){
// because the result here is asynchronous, you can ONLY use it
// in this callback or in any function you pass it to from here
if (!err) {
console.log("Value of geocodes: "+geocodes);
}
});

但是,通过这个更简单的实现,您可以看到 geo 对象根本没有真正添加任何值,因为它只是复制现有 API,而不添加任何额外的功能。

关于javascript - NodeJS 中嵌套函数的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28576391/

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