Javascript 为什么承诺使用日志数据,但返回未定义的相同数据

Javascript 为什么承诺使用日志数据,但返回未定义的相同数据,javascript,node.js,promise,nativescript,Javascript,Node.js,Promise,Nativescript,我有一个功能: getCoordinates: function() { geoLocation.getCurrentLocation().then(function(location) { return "latitude: " + location.latitude + " longitude:" + location.longitude; }); } 返回undefined,但当我执行此操作时: getCoordinates

我有一个功能:

getCoordinates: function() {
        geoLocation.getCurrentLocation().then(function(location) {
            return "latitude: " + location.latitude + " longitude:" + location.longitude;
        });
    }
返回undefined,但当我执行此操作时:

getCoordinates: function() {
        geoLocation.getCurrentLocation().then(function(location) {
            console.log("latitude: " + location.latitude + " longitude:" + location.longitude);
        });
    }
并运行我得到的相同函数:

“纬度:4X.XXXXXX经度:-12X.XXXXXX”


我不明白为什么在必须定义数据或无法登录到控制台时返回未定义数据。这是时间问题吗?我缺少什么?

您只是从
然后的
回调返回
,而不是从
getCoordinates
函数返回(实际上
不返回任何内容,因此
未定义的

总的来说。在您的情况下,最好的解决方案是简单地回报您已经创造的承诺,并在未来实现您期望的价值

getCoordinates: function() {
    return geoLocation.getCurrentLocation().then(function(location) {
//  ^^^^^^
        return "latitude: " + location.latitude + " longitude:" + location.longitude;
    });
}

您只从
然后的
回调中返回
,而不是从
getCoordinates
函数中返回(该函数实际上不返回任何内容,因此
未定义)

总的来说。在您的情况下,最好的解决方案是简单地回报您已经创造的承诺,并在未来实现您期望的价值

getCoordinates: function() {
    return geoLocation.getCurrentLocation().then(function(location) {
//  ^^^^^^
        return "latitude: " + location.latitude + " longitude:" + location.longitude;
    });
}

您是否希望它返回数据或承诺返回数据?您是否希望它返回数据或承诺返回数据?我已经尝试了您上面介绍的解决方案。当我这样做时,promise对象本身被返回:[object promise]是的,这是意料之中的。您无法返回数据,因为它还不存在。请阅读链接的问题。您需要执行
getCoordinates())
,而不是执行
getCoordinates()。然后执行(console.log)
,并处理您没有立即获取日志的事实。好的,我现在理解了问题。谢谢你,伙计!我已经尝试了你上面提出的解决方案。当我这样做时,promise对象本身被返回:[object promise]是的,这是意料之中的。您无法返回数据,因为它还不存在。请阅读链接的问题。您需要执行
getCoordinates())
,而不是执行
getCoordinates()。然后执行(console.log)
,并处理您没有立即获取日志的事实。好的,我现在理解了问题。谢谢你,伙计!