首页 > 解决方案 > React Native 我无法通过承诺得到结果

问题描述

显然很简单:等待得到一个结果来设置一个带有承诺的状态

按钮:

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));
  };

其实我是新来的,我不知道如何使用承诺。谢谢!

标签: javascriptes6-promise

解决方案


你的变量有点混乱。您在 Promise 回调中声明restotalTime然后在新范围内重新声明它。这行不通。此外,Promises 在其回调中返回两个值 -resolvereject,它们本身都是方法。因此,您res在 Promise 范围内的值实际上是对方法的引用。正确使用resolve会将 promise 的值返回给父函数。也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


推荐阅读