@FastClick
Я человек, а ты? :)

Как узнать оставшееся время в setTimeout?

Есть простой код:

setTimeout(() => {
console.log(`test`);
}, 50000);

Который по истечению таймера - 50 секунд отправляет в консоль текст: test , как узнать, сколько времени осталось до истечении этого времени? Желайте опишите Ваш ответ максимально подробно. Спасибо.
  • Вопрос задан
  • 301 просмотр
Решения вопроса 1
@ksnk
а вот, кому точность до миллисекунд на длиных таймаутах ?
function setMyTimer(_t, interval){
	_t.start=Date.now();
	_t.interval=_t.interval||interval;
	_t.log_interval=_t.log_interval || 1000;

	function log(){
		const diff=_t.interval - (Date.now() - _t.start);
		if(_t.log)_t.log(diff);
		if(diff>_t.log_interval)
			setTimeout(log,_t.log_interval);
		else {
			setTimeout(_t.main,diff<0?1:diff);
		}
	}

	setTimeout(log,_t.log_interval);
}

setMyTimer({
	main: ()=>console.log('test1'),
	log: (diff)=>console.log('1:осталось '+diff+' ms ')
//, interval : 1200000
//, log_interval: 500
}, 50000);

setMyTimer({
	main: ()=>console.log('test2'),
	log: (diff)=>console.log('2:осталось '+diff+' ms ')
//, interval : 1200000
//, log_interval: 500
}, 20000);
setMyTimer({
	main: ()=>console.log('test3'),
//	log: (diff)=>console.log('2:осталось '+diff+' ms ')
//, interval : 1200000
//, log_interval: 500
}, 5000);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы