За последние 24 часа нас посетили 16890 программистов и 1703 робота. Сейчас ищет 971 программист ...

Как остановить setTimeout

Тема в разделе "JavaScript и AJAX", создана пользователем vodorod, 14 июн 2011.

  1. vodorod

    vodorod Активный пользователь

    С нами с:
    10 янв 2011
    Сообщения:
    217
    Симпатии:
    0
    Есть функция проверки сообщений:
    [js]
    function show(){
    var a=$.cookie("ids");
    $.ajax({
    url: "post.php",
    cache: false,
    type: "GET",
    data: {ids: a},
    success: function(html){
    $("#otvet").html(html);
    setTimeout(function(){ //самовызов
    show();
    }, 5000);
    }
    });
    if(!$("#otvet").val()){andisabled();}
    }
    [/js]
    Как остановить выполнение функции при невыполнении условия?
     
  2. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    Отмена выполнения
    Вы можете отменить выполнение setTimeout при помощи clearTimeout, используя для этого идентификатор таймаута.

    Пример:
    var timeout_id = setTimeout(...)
    clearTimeout(timeout_id)
     
  3. vodorod

    vodorod Активный пользователь

    С нами с:
    10 янв 2011
    Сообщения:
    217
    Симпатии:
    0
    то есть вот так?
    function show(){
    var a=$.cookie("ids");
    $.ajax({
    url: "post.php",
    cache: false,
    type: "GET",
    data: {ids: a},
    success: function(html){
    $("#otvet").html(html);
    var timeout_id = setTimeout(function(){ //самовызов
    show();
    }, 5000);
    }
    });
    if(!$("#otvet").val()){andisabled(); clearTimeout(timeout_id);}
    }
     
  4. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    боюсь даже спрашивать что ты там мутишь) вызывай alert если выполнилось твое условие и проверяй)
     
  5. vodorod

    vodorod Активный пользователь

    С нами с:
    10 янв 2011
    Сообщения:
    217
    Симпатии:
    0
    Короче надо чтобы при получении ответа, функция останавливалась. А можешь по подробнее, а то я не понял
     
  6. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    зачем тогда timeout? получи один раз и все.. по клику или через n секунд.
     
  7. vodorod

    vodorod Активный пользователь

    С нами с:
    10 янв 2011
    Сообщения:
    217
    Симпатии:
    0
    ответ вписывается не пользователем, а приходит с сервера. Вот и надо чтобы при приходе ответа, функция останавливалась
     
  8. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    [js]function show(){
    var timeout_id = setTimeout(function(){ //самовызов
    $("#otvet").html('blabla');
    }, 5000);
    var a=$.cookie("ids");
    $.ajax({
    url: "post.php",
    cache: false,
    type: "GET",
    data: {ids: a},
    success: function(html){
    $("#otvet").html(html);
    clearTimeout(timeout_id);
    }
    });}[/js]