Jump to content
  • 0

clearTimeout


ghost
 Share

Question

Всем добрый день, опишу ситуацию.

Есть цикл в цикле в переменную tim указывается время указанное в полях пользователем. Это время через которое должна запускаться программа, может быть 5 секунд, может быть 2, может быть 60, может быть 180, правильнее сказать любое может быть, на усмотрение пользователем.

Вначале я сделал паузу

function pause(ms)
{
var date = new Date();
var curDate = null;
do { curDate = new Date(); }
while(curDate-date < ms);
}

функция просто считала секунды и подвешывала браузер если больше 10 секунд, можно было продолжать конечно и все работало, но не корректно как-то, должно все и так работать.

Решил использовать setTimeout

Но он получается общий на всю программу, когда и как мне его сбрасывать что бы выполнялось все правильно.

Так как в коде ниже он сразу сбрасывает и ничего не срабатывает, а если убрать clearTimeout, то при задании 5,10,15,20,25 секунд программа выполняется каждые 5, а не через 5 после выполнения через 10.

Посоветуйте как сделать.

Спасибо!

for (i=0; i<=kolvo; i=i+1)
{
tempper1 = rele1+i;
tempper2 = rele2+i;
tempper3 = rele3+i;
tempper4 = rele4+i;
alert(tempper1);
per1 = document.getElementsByName(tempper1)[0].value;
per2 = document.getElementsByName(tempper2)[0].value;
per3 = document.getElementsByName(tempper3)[0].value;
per4 = document.getElementsByName(tempper4)[0].value;
mass = per1+per2+per3+per4;
t = timer+i;
tt = document.getElementsByName(t)[0].value;
tim = tt*1000;
timeoutId = setTimeout(go, tim);
clearTimeout(timeoutId);
// upr2(mass);

}
}

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Надо наверное несколько разых индентификаторов для таймаута задавать. А вообще не совсем понятна задача. Т.е. для чего юзеру указывать время и т.п. Можно конкретный пример?

Link to comment
Share on other sites

  • 0

Дело вот в чем я делаю не страничку для сайта, а веб интерфейс для прибора, там есть несколько режимов управления. Онлайн там я все сделал все работает, а есть режим задания программы. В этом режиме пользователь задает параметры и время через которое их нужно применить.

Разные идентификаторы было первой идеей, но что-то не получилось реализовать)

сделал

tim = tt*1000+tim;

Единственное сейчас нужно проверить массив правельный будет передавать или нет.

Передает все время массив установленный в конце. Точно надо что-то с идентификатором делать

Link to comment
Share on other sites

  • 0

Ну вот как-то так можно разные индентификаторы задавать

for (var i = 0; i <= kolvo; i++) {
window['timeoutID_' + i] = setTimeout(go, tim);
}

А как-то так убивать

clearTimeout(timeoutId_1);

// или если в цикле
clearTimeout(window['timeoutId_' + i);

Только не понятно зачем тут создается таймаут и тут же убивается:

timeoutId = setTimeout(go, tim);
clearTimeout(timeoutId);

Link to comment
Share on other sites

  • 0

Ну я и говорю если его тут же убивать он не срабатывает вообще)

Чуть позже попробую с идентификаторам как ты написал, если не получится попробую сделать через два массива

Спасибо, за способ, я о таком не знал)

Edited by ghost
Link to comment
Share on other sites

  • 0

Сделал так.

for (i=0; i<=kolvo; i=i+1)
{
tempper1 = rele1+i;
tempper2 = rele2+i;
tempper3 = rele3+i;
tempper4 = rele4+i;
per1 = document.getElementsByName(tempper1)[0].value;
per2 = document.getElementsByName(tempper2)[0].value;
per3 = document.getElementsByName(tempper3)[0].value;
per4 = document.getElementsByName(tempper4)[0].value;
mass[i] = per1+per2+per3+per4;
t = timer+i;
tt = document.getElementsByName(t)[0].value;
tim = tt*1000+tim;
timeoutID = setTimeout(go, tim);
//clearTimeout(timeoutId);
//upr2(mass);

}

function go() {
alert(mass[flagt]);
// upr2(mass[flagt]);
flagt++; }

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy