Здравствуйте. Решил поразвлечься изучая JS и пришел в тупик. Написал такой код
function daaays () {
today = new Date();
BigDay = new Date("May 29, 2017 09:00:00")
msPerDay = 24 * 60 * 60 * 1000 ;
timeLeft = (BigDay.getTime() - today.getTime());
e_daysLeft = timeLeft / msPerDay;
daysLeft = Math.floor(e_daysLeft);
e_hrsLeft = (e_daysLeft - daysLeft)*24;
hrsLeft = Math.floor(e_hrsLeft);
minsLeft = Math.floor((e_hrsLeft - hrsLeft)*60);
vk.addListener.messages(function(msg) {
if(msg.body == "!exam")msg.send("До русского языка осталось:\n" + daysLeft + " дней\n" + hrsLeft + " часов\n" + minsLeft + " минут\n" + "Времени мало, но вы там держитесь :3");
if(msg.body == "!Экзамен")msg.send("До русского языка осталось:\n" + daysLeft + " дней\n" + hrsLeft + " часов\n" + minsLeft + " минут\n" + "Времени мало, но вы там держитесь :3");
if(msg.body == "!экзамен")msg.send("До русского языка осталось:\n" + daysLeft + " дней\n" + hrsLeft + " часов\n" + minsLeft + " минут\n" + "Времени мало, но вы там держитесь :3");
if(msg.body == "!время")msg.send("До русского языка осталось:\n" + daysLeft + " дней\n" + hrsLeft + " часов\n" + minsLeft + " минут\n" + "Времени мало, но вы там держитесь :3");
}); }
setInterval(daaays, 50000);
Он должен считать время до заданного события (тут это экзамен, допустим) и писать его в ЛС по команде. Но не совсем понимаю, как перезапустить функцию. В том виде, какой я представил выше, функции тупо плодятся по таймеру, и в ответ (после 100000мс) приходят 2+ ответа, что неправильно как то. Расскажите мне, пожалуйста, как переделать код так, чтобы время обновлялось, скажем, каждую минуту, но функции не плодились. Нужно либо делать именно перезапуск (а не запуск новой) функции, либо (как я думаю) производить вычисления в отдельной функции (и перезапускать ее), а значения переменных выносить из функции просто напросто в отдельную часть кода (не понимаю после C++ абсолютно, как это делать можно в JS). Заранее огромное спасибо!
UPD. Смог сам решить (мне так кажется) проблему. Переписал код вот так:
var daysLeft;
var hrsLeft;
var minsLeft;
function daaays () {
today = new Date();
BigDay = new Date("May 29, 2017 09:00:00");
msPerDay = 24 * 60 * 60 * 1000 ;
timeLeft = (BigDay.getTime() - today.getTime());
e_daysLeft = timeLeft / msPerDay;
daysLeft = Math.floor(e_daysLeft);
e_hrsLeft = (e_daysLeft - daysLeft)*24;
hrsLeft = Math.floor(e_hrsLeft);
minsLeft = Math.floor((e_hrsLeft - hrsLeft)*60);
return(0);
}
setInterval(daaays, 100, daysLeft, hrsLeft, minsLeft);
vk.addListener.messages(function(msg) {
if(msg.body == "!exam")msg.send("До русского языка осталось:\n" + daysLeft + " дней\n" + hrsLeft + " часов\n" + minsLeft + " минут\n" + "Времени мало, но вы там держитесь :3");
if(msg.body == "!Экзамен")msg.send("До русского языка осталось:\n" + daysLeft + " дней\n" + hrsLeft + " часов\n" + minsLeft + " минут\n" + "Времени мало, но вы там держитесь :3");
if(msg.body == "!экзамен")msg.send("До русского языка осталось:\n" + daysLeft + " дней\n" + hrsLeft + " часов\n" + minsLeft + " минут\n" + "Времени мало, но вы там держитесь :3");
if(msg.body == "!время")msg.send("До русского языка осталось:\n" + daysLeft + " дней\n" + hrsLeft + " часов\n" + minsLeft + " минут\n" + "Времени мало, но вы там держитесь :3");
});
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Ребят, помогите с домашним заданием пожалуйстаКод почему не срабатывает
Добрый день! Подскажите, пожалуйста, плагин для автодополнения javascript, как в IDEЗдесь посоветовали плагин SublimeCodeIntel, я его установил, однако,...
Хочу реализовать подобие регистрации и авторизацииВо время сабмита регистрационной формы, собираю данные из ее полей и добавляю их в массив...