const rootRef = firebase.database().ref().child('distance');
rootRef.on('value',snap =>{
console.log("Usage value",snap.val());
let prevData=this.state.percentage;
this.consumptionHandler(prevData, snap.val())
this.watermeterHandler(snap.val());
setTimeout(()=>{
console.log('hi');
},10000)
})
Я пытаюсь создать веб-приложение, использующее реагирование. Он использует FireBase в качестве базы данных. Я работаю над базой данных FireBase в реальном времени. Мне было интересно, что если я использую функцию setTimeout внутри .on (), я думал, что «hi» будет печататься через каждые 10 секунд, но вряд ли только впервые «hi» появится через 10 секунд и после этого «hi» всего за одну секунду. Мои функции, то есть потреблениеHandler и watermeterHandler, работают нормально, у меня есть проблемы только с функцией setTimeout.
Функция settimeout работает только один раз?
Пожалуйста, предоставьте решение, которое «hi» появляется в консоли только через каждые одну секунду.
Дайте мне знать, если требуется дополнительная информация.
Проверьте, не помогает ли это изображение консоли ![console image](https://i.stack.imgur.com/YTrNm.png)
На изображении значение использования - это значение, которое я получаю из своего firebase. Как новичок, я мало что знаю о веб-разработке, но я думаю, что метод .on () работает рекурсивно, но почему для каждой рекурсии setTimeout не работает должным образом, так как первый 'hi' появляется через 10 секунд, но он не совпадает с другим 'hi', как показано
В соответствии с указаниями, я написал аналогичный простой код того, чего я хочу достичь, но в этом коде setTimeout работает правильно.
const recursiveHandler=(i)=>{
if(i ===10){
return
}
setTimeout(()=>{
console.log(i);
i++;
recursiveHandler(i)
}, 10000)
}
recursiveHandler(1);