как «убить» или отменить функцию setTimeout

#javascript #jquery #settimeout

#javascript #jquery #settimeout

Вопрос:

Как я могу «убить» эту функцию setTimout, но не нарушить мой код? Я пробовал с clear, и это не сработало.

По какой-то причине, когда я удаляю ее везде, это нарушает мой код (также, если я удаляю эту функцию везде). Когда я говорю «return» вверху перед выполнением таймаута, появляется мой jQuery, но мой код не работает.

Также следует упомянуть, что мой файл jQuery загружается в Mozilla. Он также загружается на моем локальном компьютере в Chrome и Safari, но не в режиме реального времени на сервере (я также использую WordPress) Safari / Chrome.

Функция с setTimeout

 function queueRender() {
    var _this = this;

    settings.queueRenderTimeout = setTimeout(function(){
        render();
    }, settings.debounce);
    if(typeof settings.queueRenderTimeout !== "undefined") {
        clearTimeout(settings.queueRenderTimeout)
    }
    render();
}
  

Вот функция рендеринга

 function render() {
    element.find(">").remove();
    var t = templates.quiz(quiz);
    element.append(t);

    $(settings.append).append(element);

}
  

— итак, в этом случае мой jQuery загружается, но мой тест прерывается.
если я изменю порядок и поставлю сначала оператор IF, то мой код не сломается.

Вот мои настройки:

     var defaults = {
        append: "body",
        quiz_template: "#quiz_template",
        question_template: "#question_template",
        answer_template: "#answer_template",
        result_template: "#result_template",
        shuffle: true
//      debounce: 10
    }
  

Код — это то, что иногда не работает. Он работает на моем локальном компьютере, но не на сервере. Я чувствую, что все еще есть некоторая задержка с setTimout, даже когда я оставляю его «неопределенным».

Комментарии:

1. Вы очищаете время ожидания перед его настройкой!

2. @unlucky13 Попытался поменять их местами — не сработало. 🙁

3. Я не уверен, чего вы пытаетесь достичь здесь, но, да, после установки таймаута значение typeof settings.queueRenderTimeout !== "undefined" всегда равно true, как settings.queueRenderTimeout и теперь идентификатор таймаута.

4. @unlucky13 Ах да! Я забыл поставить render() в качестве последнего. Большое спасибо! Я действительно ценю это.

5. Добро пожаловать! Просто примечание, я думаю, что в вашем коде есть что-то, что не имеет смысла: вы устанавливаете тайм-аут и сразу же очищаете его без какой-либо конкретной причины?