【问题标题】:Returning a value of callback function?返回回调函数的值?
【发布时间】:2013-06-22 21:55:05
【问题描述】:

我在函数回调方面遇到了一些问题,尤其是 HTML5 地理定位 API。我对 Js 也有点陌生。功能:

function getInfo()
{
    navigator.geolocation.getCurrentPosition(getPos);
}

接受一个函数的回调参数,该参数获取传递给它的位置。

function getPos(position)
{
PositionObj.lat = position.coords.latitude;
PositionObj.lon = position.coords.longitude;
}

我创建了一个“位置”对象来存储坐标,但无法返回它们。

var PositionObj = 
{
lat:null,
lon:null,
returnLat: function()
             {
             return this.lat;
             },
returnLon: function()
             {
             return this.lon;
             }
};


function printStuff()
{
getInfo();
console.log(PositionObj.returnLat());
}

编辑:语法错误已修复。当我调用 printStuff() 时,我仍然得到“null”。

【问题讨论】:

  • 我没有看到您从 getPos() 返回任何内容。是不是有问题?
  • 我认为你应该试试getPos(不带())。您必须传递函数引用,而不是函数 getPos 的返回 vzlue。

标签: javascript html


【解决方案1】:
  • 要传递回调,只需使用getPos 而不是立即调用函数。
  • 使用正确的语法在PositionObj 中声明属性。

PositionObj = {
    lat: null,
    lon: null,
}

【讨论】:

  • 谢谢!我认为这是我做错的第一件事,请您检查我的编辑,看看是否还有其他可能有问题的地方?似乎它应该可以工作。
【解决方案2】:

您的 PositionObj 文字不正确。初始属性应该用冒号设置:

{ lat: '', lon: '' }

【讨论】:

    【解决方案3】:

    回调应该告诉您获取位置信息的请求是异步的。这意味着getInfo() 不会立即设置值,因此以下行无法访问“新”值。

    任何依赖于异步函数结果的东西都必须在回调本身中。

    【讨论】:

    • 谢谢,可以举个例子吗?有什么资源可以让我了解Js中的异步和同步函数吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    • 1970-01-01
    • 1970-01-01
    • 2021-06-01
    • 1970-01-01
    相关资源
    最近更新 更多