clearTimeout на нескольких setTimeout

Вы не можете вернуть анонимный объект в c #, но вы можете вернуть именованный кортеж так:

private (bool success, string responseText) abc(string a, string b)
{
    return (false, "Input-values not valid");
}
5
задан 8 January 2009 в 20:02
поделиться

3 ответа

Не уверенный, если Вы уже знаете, это, но, clearTimeout принимает timeoutID, который ранее возвращается от вызова до setTimeout.

Поэтому необходимо присвоить этот идентификатор тайм-аута переменной, которая остается в объеме для того, когда необходимо отменить его. Затем передайте его вызову clearTimeout, когда необходимо будет остановить цикл.

Поскольку это - просто целочисленный идентификатор, другая опция могла бы состоять в том, чтобы создать пользовательский атрибут на dom элементе с помощью чего-то как "domElement.setAttribute ('timoutIDFirst')"; (или attr в jQuery), и затем просто получают его с помощью getAttribute при необходимости.

Рассмотрение Вас имеет несколько таймеров, использование пользовательских атрибутов на элементах DOM может помочь сохранить вещи более опрятными.

EG:

      function mediumtosmall(visiblespan) {
                vt.removeClass('medium').addClass('small');

                // Store the timeoutID for this timer
                var storedTimeoutID=setTimeout(function() { smalltomedium(visiblespan); },150);
                 $('span:visible').attr('timeoutID',storedTimeoutID);

        };

и затем:

    $('div.click').click(
            function(event) {
                    var visiblespan = $('span:visible');
        var invisiblespan = $('span:visible');
                    mediumtosmall(visiblespan);

                    var storedTimeoutID=invisibleSpan.attr('timeoutID');
                    // Pass the ID to clearTimeout
                    clearTimeout(storedTimeoutID);
            }
    );
10
ответ дан 18 December 2019 в 12:02
поделиться

Вы взглянули на очередь jQuery? Я не использовал его, но это, кажется, разработано, чтобы сделать то, что Вы делаете.

1
ответ дан 18 December 2019 в 12:02
поделиться

Вероятно, лучший способ обработать это состоит в том, чтобы использовать setInterval () вместо setTimeout. Как setTimeout, setInterval возвращает целое число, которое может быть передано clearInterval () для отмены обработки.

пример был бы (предупреждение, я не протестировал это вообще):

function animateSizes( jQueryElement ) {
  if( jQueryElement.hasClass("big") 
    jQueryElement.removeClass("big").addClass("medium");
  else if( jQueryElement.hasClass("medium") ) 
    jQueryElement.removeClass("medium").addClass("small");
  else if( jQueryElement.hasClass("small") ) 
    jQueryElement.removeClass("small").addClass("smaller");
  else
    jQueryElement.removeClass("smaller").addClass("big");
}


function startAnimation( elem ) {
  var sizeAnimation = window.setInterval( function() {animateSizes( elem )}, 150);
  elem.attr( "sizeAnimation", sizeAnimation );
}

function stopAnimation( elem ) {
  var sizeAnimation = elem.attr("sizeAnimation");
  window.clearTimeout( sizeAnimation );
}
3
ответ дан 18 December 2019 в 12:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: