Я не на 100% уверен в том, что вы пытаетесь сделать, но, как говорит Ранджит , вы можете использовать setTimeout для запуска произвольного кода в какое-то (приблизительное) будущее время.
Этот пример, вероятно, можно улучшить, если бы у меня было немного больше подробностей о том, что вы делаете.
Если вы находитесь в среде узлов, вы можете рассмотреть возможность использования события .эмиттер для широковещательной передачи изменений вместо необходимости иметь переменную в области видимости.(Это не особенно сложно сделать в браузере, если вы находитесь там.)
html / css-части предназначены только для отображения значений в примере;иначе не нужно.
const rand = document.getElementById('rand');
const snapshot = document.getElementById('snapshot');
let volatile = 0;
// update the value every ~100ms
setInterval(() => {
// assign a new random value
volatile = Math.random();
// display it so we can see what's going on
rand.innerText = volatile;
}, 100);
// do whatever you want with the snapshotted value here
const snap = () => snapshot.innerText = volatile;
// grab the value every 2 seconds
setInterval(snap, 2000);
div {
margin: 2rem;
}
<div>
<div id="rand"></div>
<div id="snapshot"></div>
</div>