当前位置: 首页 > 知识库问答 >
问题:

如何从promise中获得结果价值?

皇甫波峻
2023-03-14

我有麻烦得到地理定位坐标从一个promise函数返回。我使用下面的代码从这里:如何geolocation.get货币位置返回值?

const getPosition = () => {
  return new Promise((res, rej) => {
      navigator.geolocation.getCurrentPosition(res, rej)
  });
}

export const getGeolocation = () => {
  getPosition().then(console.log)
}

我试过:

export const getGeolocation = () => {
  return getPosition().then(result => return result)
} // doesnt work

有人能给我解释一下从promise中获得价值的正确方法是什么吗?谢啦

共有2个答案

益清野
2023-03-14

试试这个。

const getPosition = () => {
    return new Promise((res, rej) => {
        navigator.geolocation.getCurrentPosition(res, rej)
    });
}
const getGeolocation = async() => {
    try {
        let result = navigator.permissions.query({
            name: 'geolocation'
        });
        if (result.state == 'granted') {
            let respnse = await getPosition();
        } else {
            throw new Error("User denied Geolocation");
        }
    } catch (error) {
        console.log(error.message);
    }
}
getGeolocation();
仇建茗
2023-03-14

您需要在getGeolocation()函数中使用回调方法。

以下是您的解决方案

export const getGeolocation = (callback) => {
  getPosition().then((result) => {
     callback(result);
  })
}

现在,请参阅下面的代码,以访问来自getPosition()函数的结果。

getGeolocation((result)=>{
   console.log("Position : ",result);
});

请检查下面的代码,希望这对您和


const getPosition = () => {
    return new Promise((res, rej) => {
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(res);
        } else {
            rej("Unable to found current location");
        }

    });
}

export const getGeolocation = (callback) => {
    getPosition().then((result) => {
        callback({
            code: 1,
            message: "Location",
            location: result
        });
    }).catch((_error) => {
        callback({
            code: 0,
            message: _error
        });
    });
}

getGeolocation((response) => {
    if (response.code == "1") {
        console.log(response.location);
    } else {
        console.log(response.message);
    }
});

要了解回调如何工作,请通过下面的链接,你会有一个更好的主意。

https://www.w3schools.com/jquery/jquery_callback.asp

 类似资料:
  • 问题内容: 当我调试此代码时,在databaseUser中dataSnapshot在数据库中具有User的值,但是在object中,未添加,则全部为null。而且我不明白,因为在对象事件中正常接收值。 我的数据库用户,目前仅用于测试: 和方法,只是选择另一个活动的事件的关键: 问题答案: 当您对Firebase数据库执行查询时,可能会有多个结果。通过附加a,您可以在一个快照中获得这些结果,因此快照

  • callbackFacebook函数如何从uri获取代码的值? uri=http://localhost:8081/callback?code=AQDNm6hezKdTsId5k4oXKNo

  • 问题内容: 我一直在尝试发送HttpPost请求并获取响应,但是即使我能够建立连接,我仍然无法获得如何获取由请求-响应返回的字符串消息。 对不起,我听起来很幼稚,因为我是Java新手。请帮我。 问题答案: 尝试在您的响应中使用:

  • 我正在使用一个挂起的意图来启动一个闹钟(使用AlarmManager)。我需要不同的结果代码启动的活动,基于两个按钮中的哪一个放在它的用户点击(Snooze或取消)。我怎么得到这个结果?不幸的是,在关闭活动上启动finish()方法之后,没有在父活动中启动onActivityResult()方法。在Android文档中,它指出

  • 问题内容: 我试图在Android中的HashMap上进行搜索,但出现问题: 考虑以下示例: 现在,我要对其进行迭代并获取每种颜色的值,并希望在“ Toast”中显示。如何显示? 问题答案:

  • 问题内容: 我正在使用CTest(CMake的一部分)进行自动化测试。 如何在Jenkins仪表板中获得CTest结果?或者,换句话说,如何使CTest以类似JUnit的XML输出? 问题答案: 在Jenkins中,在CMake部分(可能是通过CMake插件完成)之后,添加以下批处理脚本,或适应Linux上的构建: 是CMake插件中的构建目录 是我所有测试所在的子目录 使CTest输出为XML(