Запустить разрешение Android в течение заданного времени - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь сделать так, чтобы разрешение Android отображалось в течение 2,5 секунд. Но вместо этого, это происходит автоматически после рендеринга. Я пытался с TimeOut и setInterval, но, возможно, синтаксическая структура не к месту. Может кто-нибудь предложить решение, пожалуйста

componentDidMount(){
    if(Platform.OS === 'ios'){
 navigator.geolocation.requestAuthorization()
    }
    //state for opened toggle and combine with android platform
    else if (Platform.OS === 'android') {

      async function requestlocationPermission() {
        try {
          const granted = await PermissionsAndroid.request(
            PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
            {
              title: 'Location permission',
              message:
                'Just for location ',
              buttonNegative: 'Cancel',
              buttonPositive: 'OK',
            },
          );
          if (granted === PermissionsAndroid.RESULTS.GRANTED) {
            console.log('location enabled');
          } else {
            console.log('location denied');
          }
        } catch {
          console.warn(err)
        }
      }
      setInterval(requestlocationPermission(), 2500)

    }
  }

1 Ответ

0 голосов
/ 05 июля 2019

Функция setInterval принимает функцию в качестве первого параметра, проблема заключается в том, как вы пытались вызвать setInterval(requestlocationPermission(), 2500).

Поскольку javascript будет пытаться получить результат выполнения любой заданной функции для интерпретации в качестве параметра, ваша функция здесь выполняется мгновенно до тайм-аута 2500 мс. В основном Javascript считает, что функция вернет другую функцию, которая, в свою очередь, будет выполнена после истечения времени ожидания.

Вот два варианта:

Передача функции в виде переменной: (рекомендуемая опция)
setInterval(requestlocationPermission, 2500)

Передача функции обтекания:
setInterval(() => {requestlocationPermission()}, 2500)

...