React Native 我无法得到承诺的结果

React Native I can't get a result with a promise

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

按钮:

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

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

你的变量有点混乱。您在 totalTime 中声明了 res,但随后在 promise 回调的新范围内重新声明了它。这行不通。此外,在回调中承诺 return 两个值 - resolvereject,它们本身都是方法。所以你在 Promise 范围内的值 res 实际上是对方法的引用。正确使用 resolve 会将 promise 的值 return 传递给父函数。 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 的值。