我是react的新手,我想获取位置坐标并将它们与参数一起传递给api,但我收到:
Unexpected reserved word 'await'
守则:
async getData() {
if (navigator.geolocation) {
navigator.geolocation.watchPosition(function (position) {
console.log("Latitude is :", position.coords.latitude);
console.log("Longitude is :", position.coords.longitude);
var lat = position.coords.latitude;
var lon = position.coords.longitude;
const url = `http://api.openweathermap.org/data/2.5/weather?lat=${lat}&lon=${lon}&appid=ca148f5dc67f12aafaa56d1878bb6db2`;
const response = await fetch(url);
let data = await response.json();
console.log(data);
});
}
}
2条答案
按热度按时间hfsqlsce1#
该函数需要
async
. 您确实使父函数异步,但同时也传入了一个回调,而您没有使其异步gcuhipw92#
你的
await
不是在一个async
函数(它在非-async
嵌套在async
功能),但更大的问题是getData
正在尝试返回不符合承诺模型的承诺:来自地理位置对象的一系列重复更新。watchPosition
反复调用它的回调,而不是一次。javascript对于这种东西没有内置的语义,通常称为“可观察的”(嗯,有)
async
迭代器,但我怀疑您可能不希望这样)。这里有图书馆,但如果不是这样,你就必须getData
接受一个回调,只要有更新就会调用该回调。大致如下:从名字
getData
,您可能只是想一次性获取当前位置。这就是问题所在getCurrentPosition
方法。如果是这样,您需要手动创建一个承诺,因为getCurrentPosition
没有提供一个:但只有在你只想知道当前位置的情况下。