我只是在学习对本机的反应,我正在尝试录制视频并在屏幕上显示剩余的视频时长。
我正在使用以下代码:
setInterval (() => {
this.setState ({progress: progress * 2});
}, 1000);
var video = await this.camera.recordAsync ({
mute: true,
quality: '480p',
maxDuration: this.state.max_duration,
});
但是,视频录制的效果很好,但是setiInterval已停止工作。如何在async funtion
中运行setInterval?请帮忙。
答案 0 :(得分:0)
JavaScript / ReactJS / React-Native没有本地睡眠功能。由于在ES2018中实现了promise和async / await,因此可以执行setTimeout / setInterval:
要为异步功能设置setInterval:
setInterval(async () => {
await print("waiting")
}, 2000);
(也可以尝试这样做),您可以使函数递归。这样,您可以在函数完成后为下一次迭代启动超时。
async function doSomething() {
//code to run on a interval
setTimeout(doSomething, 2000); // <------------------
}
setTimeout(doSomething, 2000);
要为异步功能(如睡眠功能)设置setTimeout:
首先将其作为函数放置在您的代码中
const sleep = (milliseconds) => {
return new Promise(resolve => setTimeout(resolve, milliseconds))
}
现在在异步函数中使用此函数:
await sleep(2000)
您也可以使用它
sleep(500).then(() => {
console.log("waiting");
})