javascript - 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));
};
其实我是新来的,我不知道如何使用承诺。谢谢!
解决方案
你的变量有点混乱。您在 Promise 回调中声明res
,totalTime
然后在新范围内重新声明它。这行不通。此外,Promises 在其回调中返回两个值 -resolve
和reject
,它们本身都是方法。因此,您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
。
推荐阅读
- html - 在容器底部对齐图像
- c++ - 线程 1:Xcode 错误中的 EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
- spring - Spring Web Flux Mongo 查询
- ionic-framework - ionic 3禁用所有硬件按钮防止退出应用程序
- javascript - 节点 - 用于更新数据库的 For 循环不起作用
- ruby - 是否可以在 Ruby 中访问“main:Object”?
- json - 以与输入中给出的相同顺序读取键值对中的 json 文件
- angular - 如何使组件在整个包中可见?
- python - 使用函数而不写出名称,而是通过在 python 中的变量中使用 info
- python - 如何根据 Excel 文件名在 python 中创建逻辑代码?