我有一个功能:
getCoordinates: function() {
geoLocation.getCurrentLocation().then(function(location) {
return "latitude: " + location.latitude + " longitude:" + location.longitude;
});
}
返回未定义,但当我这样做时:
getCoordinates: function() {
geoLocation.getCurrentLocation().then(function(location) {
console.log("latitude: " + location.latitude + " longitude:" + location.longitude);
});
}
并运行我得到的相同函数:
“纬度:4X.XXXXXX 经度:-12X.XXXXXXX”
我不明白为什么当必须定义数据时它返回未定义,否则它不会记录到控制台。这是某种时间问题吗?我错过了什么?
最佳答案
您仅从 then
回调中返回
,而不是从 getCooperatives
函数返回(实际上,该函数不返回
任何内容,因此未定义
)。
This is unsolvable for asynchronous callbacks一般来说。就您而言,最好的解决方案是简单地返回您已经创建的 promise ,该 promise 将在未来实现您期望的值(value)。
getCoordinates: function() {
return geoLocation.getCurrentLocation().then(function(location) {
// ^^^^^^
return "latitude: " + location.latitude + " longitude:" + location.longitude;
});
}
关于javascript - 为什么 Promise 记录数据但返回相同数据的未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41133808/