gcogco10 Ответов: 1

Как остановить итерационный процесс в javascript?


У меня есть две функции в Javascript, одна ждет первого выполнения кнопки и ждет срабатывания второй кнопки, когда она считывает первое значение(field8=0) и продолжает второе значение(field8=1). Но проблема в том, что мне нужен способ остановить итерацию, итерация продолжается без остановки. Как я могу считать первое значение равным 0 и наоборот? Быть в состоянии показать сообщение о состоянии Пользователю, если это значение равно 0 или 1? Так что, когда он находит его, продолжайте до тех пор, пока он не остановит итерационный процесс в Ajax/Javascript. Пожалуйста, помогите, спасибо.

Что я уже пробовал:

<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
  
  function Subscribe() {
    $.ajax({
      url:'https://api.thingspeak.com/update?api_key=***&field8=0',
      type:'GET',
      data:{
      type:'text'
      },
      success:function(response){
        alert(response);
          $('#singlebutton').append(data);
         }
    
    });
    setTimeout("Subscribe()", 100);
  
    }
  // second button to unsubscribe.
  function UnSubscribe() {
    $.ajax({
      url:'https://api.thingspeak.com/update?api_key=***&field8=1',
      type:'GET',
      data:{
      type:'text'
      },
      success:function(response){
        alert(response);
          $('#singlebtn').append(data);
         }
    
      });
    //setTimeout("UnSubscribe()", 100);
  }
    

</script> 

1 Ответов

Рейтинг:
1

F-ES Sitecore

Метод Window clearTimeout() [^]

Вам нужно получить ручку от вашего таймера

var h = setTimeout("Subscribe()", 100);


затем, когда вы хотите остановить итерацию вызова

clearTimeout(h);


gcogco10

Это, кажется, работает особенно clearTimeout, теперь проблема, которую я получаю сейчас. Каждый раз, когда кнопка нажимается более 3 раз, она не сохраняет прежнего значения. Как и в случае с экземпляром функции Unsubscribe (), значение поля устанавливается на url как field8=1. по умолчанию он равен 0 в браузере. Есть ли лучший способ улучшить эту логику, поскольку я пытаюсь работать над этим, пока мы говорим?. Что я хочу точно, так это то, что если функция Suscribe() сохраняет значение как 0, то значение должно быть сохранено до этого исходного значения, а не для изменения того, был ли браузер обновлен или нажат 3 раза. То же самое относится и к функции Subscribe(). Пожалуйста, я борюсь, чтобы получить эту логику правильно.

F-ES Sitecore

Не уверен, что я действительно понимаю, что вы пытаетесь сделать, но похоже, что вам нужно обновить url-адрес в браузере, чтобы обновление страницы сохраняло желаемое значение. Если это так, то вам нужно использовать функцию pushState API истории

https://developer.mozilla.org/en-US/docs/Web/API/History_API

gcogco10

F-ES Sitecore, то, что я пытаюсь сделать просто. Я хочу, чтобы мое значение на URL из ajax call field8=1 не обновлялось дважды, а обновлялось один раз. В то время как field8=0 должно оставаться его первоначальным значением, чтобы не обновлять его с field8=1, это то, что происходит в настоящее время, если кнопка нажата из браузера. Другими словами, существует несоответствие значений между кнопками, если одна нажата первой, и наоборот.