Назначение JavaScript-геолокации для переменных - проблема с областями видимости? - PullRequest
1 голос
/ 10 марта 2019

Извинения за то, что это дубликат, я читал похожие темы, но не могу обдумать проблему, так что, надеюсь, кто-нибудь может указать мне правильное направление.

Я пытаюсь использовать API геолокации, чтобы назначить пользователям широту, долготу и метку времени для глобальной переменной (координирующий объект).Я определил функцию и могу выводить результат из консоли (из функции в обратном вызове success), но не могу присвоить ее переменной (возвращает неопределенное значение).

В файле утилит:

const getLocation = () => {
    var options = {
        enableHighAccuracy: true,
        timeout: 5000,
        maximumAge: 0
    };

    function success(pos) {
        const coords = {
            lat: pos.coords.latitude,
            long: pos.coords.longitude,
            time: pos.timestamp
        }
        return coords;
    }

    function error(err) {
        console.warn(`ERROR(${err.code}): ${err.message}`);
    }
    if ("geolocation" in navigator) {
        return (navigator.geolocation.getCurrentPosition(success, error, 
    options));
    } else {
        return console.log('geolocation must be enabled')
    }};

export default getLocation;

Назад в App.js:

import React, { Component } from 'react';
import Header from './components/Header';
import Footer from './components/Footer';
import Weather from './components/Weather';
import getLocation from './services/getLocation';
//import getWeather from './services/getWeather';

class App extends Component {
  render() {
    return (
      <div>
        <Header />
        <Weather />
        <Footer />
      </div>
    );
  }
}

console.log(getLocation())

export default App;

Я подозреваю, что это проблема с областью видимости, но, похоже, я не могу обернуть ееголова вокруг этого.Если бы кто-нибудь мог предложить какой-то совет, это было бы замечательно, спасибо.

...