Jquery: добавить задержку

0

Я использую jQuery. Затем для загрузки моих скриптов последовательно. Однако мгновенная бомбардировка серверного процессора по-прежнему слишком высока. Я попытался добавить.delay после. Then так:

siteVisits()
    .then(siteTerms)
    .delay(30000)
    .then(siteSources)
    .delay(30000)
    .then(siteBrowsers)
    .delay(30000)
    .then(siteCountries)
    .delay(30000)
    .then(siteContent);

Однако я получаю эту ошибку:

Uncaught TypeError: Object #<Object> has no method 'delay' 

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

заранее спасибо

  • 2
    Задержка работает только с анимацией. Вы не можете просто использовать это где-нибудь. Мне любопытно посмотреть, как это происходит, так как будет сложно ввести задержки (setTimeout) в функции, связанные таким образом.
  • 0
    Я понял это из ошибки. Когда я сказал «как я могу добавить задержку перед вызовом каждой функции», я имел в виду, есть ли у кого-нибудь идеи, как этого добиться другим способом?
Показать ещё 5 комментариев
Теги:

2 ответа

0

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

function DelayedExecutor(delay) {
    var self = this, queue = [], id;

    function runNext() {
        var def = queue.shift();
        if (def && typeof def.func === "function") {
            def.func.apply(def.context, def.args);
        }
        if (queue.length === 0) {
            id = clearInterval(id);
        }
    }

    this.add = function (func, args, context) {
        queue.push({func: func, args: args, context: context});
        if (!id) {
            id = setInterval(runNext, delay);
            runNext();
        }
        return self;
    };
}

а также

var de = new DelayedExecutor(30000);  /* new and improved model! */
de.add(siteTerms /*, [arguments], thisArg */);
de.add(siteSources);
de.add(siteBrowsers).add(siteCountries).add(siteContent);
0

Это не похоже на.delay, это должно быть использовано для задержки только ANIMATION, для такого рода задержки вы должны будете использовать setTimeout();

siteVisits()
    .then(function() {
        setTimeout(function() {
            siteTerms.then(function() {
                setTimeout(function() {
                    siteTerms.then()
                }, 30000);
            })
        }, 30000);
     });

Но почему эта задержка?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню