React Native Я не могу получить результат с обещанием - PullRequest
2 голосов
/ 02 мая 2020

Видимо просто: ждать получения результата для установки состояния с обещанием

кнопка:

onPress: () => sessionEnded(),

функция:

 const sessionEnded = async () => {
    const getTime = await totalTime(); // execution of the function bellow
    console.log('getTime', getTime);// I get undefined
    try {
      SoundPlayer.playSoundFile('end_bell', 'mp3');
    } catch (error) {
      console.log(error);
    }

    props.navigation.navigate('Daily', {time: time});
  };

функция для расчета времени :

  const totalTime = () => {
    let res = sessionTime - time.secs;
    console.log('totaltime calculated', res);
    return new Promise(res => setTime(res));
  };

На самом деле я здесь новичок и не знаю, как использовать обещания. Спасибо!

1 Ответ

2 голосов
/ 02 мая 2020

Ваши переменные немного перепутаны. Вы объявляете res в totalTime, но затем повторно объявляете его в новой области в обратном вызове обещания. Это не сработает. Кроме того, Promises возвращает два значения в своем обратном вызове - resolve и reject, оба из которых сами являются методами. Таким образом, ваше значение res в области действия Promise на самом деле является ссылкой на метод. Правильное использование resolve вернет значение обещания родительской функции. Также setTime не определено - я предполагаю, что это в другом месте. В противном случае удалите это тоже.

Поэтому попробуйте изменить свой код на:

const sessionEnded = async() => {
  const getTime = await totalTime(); // execution of the function bellow
  console.log('getTime', getTime); // I get undefined
};

const totalTime = () => {
  let res = 10 - 5
  console.log('totaltime calculated', res)
  return new Promise(resolve => resolve(res))
}

sessionEnded()

Когда вызывается sessionEnded, теперь он должен получить значение res.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...