переключить функцию, которая устанавливает setinterval на

avatar
verlager
9 августа 2021 в 00:15
35
1
0

Я могу добавить вызов функции soapFlow() вручную в 20 местах. Но я бы предпочел переключить функцию, которая устанавливает setinterval и оставляет на:

<li onclick="pre_reg_on();" >auto-reg</li>

function greet() {setInterval(soapFlow, 5000);}

function pre_reg_on () {greet();}

Он должен вызывать функцию приветствие() каждые 5 секунд, но вызывается только один раз.

Источник
Bravo
9 августа 2021 в 00:17
0

откуда вы знаете, что он вызывает его только один раз? насколько я вижу, код будет запускать новый интервал каждый раз, когда нажимается li

Illusion705
9 августа 2021 в 00:25
0

Вы можете объяснить свой вопрос немного подробнее? я немного смущен тем, что ваш вопрос и что вы пытаетесь выполнить

verlager
9 августа 2021 в 04:12
0

Рад. Я написал предварительно зарегистрированное мобильное приложение, которое отправляет идентификаторы на сервер. При загрузке основной программы html и js необходимо обновить, а данные игрока за последнюю неделю стереть. Но это также стирает новые входящие данные pre-reg player из-за setinterval функции чтения soapFlow() и автоматического добавления новых pre-regs. В противном случае я бы просто установил setInterval(soapFlow, 5000);

Ответы (1)

avatar
vanowm
9 августа 2021 в 00:46
1

setInterval() следует вызывать вне функции, из которой вы хотите, чтобы она выполнялась. Кроме того, чтобы избежать установки нескольких таймеров, всегда следует сбрасывать предыдущие таймеры перед установкой нового:

.

function greet() {
  console.log("greet() executed " + Date())
}

function pre_reg_on() {
  stopInterval();
  greet(); //execute imediately
  greet.interval = setInterval(greet, 5000);
}

function stopInterval()
{
  if (!greet.interval)
    return;

  clearInterval(greet.interval); // make sure clear previous interval;
  console.log("timer stopped " + Date());
  delete greet.interval;
}
<li onclick="pre_reg_on();">auto-reg</li>
<li onclick="stopInterval();">stop</li>
verlager
9 августа 2021 в 04:51
0

Приветствие() также не должно включать setInterval(soapFlow, 5000);

vanowm
9 августа 2021 в 06:08
0

Я не знаю, что такое soapFlow, черт его убрали. Ваш вопрос касался выполнения greet() каждые 5 секунд, пример делает именно это.

verlager
9 августа 2021 в 07:02
0

Большое спасибо за ваше информативное решение,