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 两个值 - resolve
和 reject
,它们本身都是方法。所以你在 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
的值。
看似简单:等待得到一个结果来设置一个带有承诺的状态
按钮:
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 两个值 - resolve
和 reject
,它们本身都是方法。所以你在 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
的值。