Пока переменная не определена - подождите - PullRequest
44 голосов
/ 05 сентября 2011

У меня есть событие click, которое автоматически запускается из другого места в первый раз.Моя проблема в том, что он запускается слишком рано, поскольку необходимые переменные все еще определяются Flash и веб-службами.Итак, сейчас у меня есть:

(function ($) {
    $(window).load(function(){
        setTimeout(function(){
            $('a.play').trigger("click");
        }, 5000);
    });
})(jQuery);

Проблема в том, что 5 секунд для человека с медленным интернет-соединением могут быть слишком быстрыми, и наоборот, для человека с быстрым интернет-соединением - слишком медленными.

Итак, как мне сделать задержку или тайм-аут, пока не будет определено someVariable?

Ответы [ 11 ]

0 голосов
/ 05 сентября 2011

Вы можете сделать так, чтобы Flash вызвал функцию, когда это будет сделано. Я не уверен, что вы подразумеваете под веб-сервисами. Я предполагаю, что у вас есть код JavaScript, вызывающий веб-сервисы через Ajax, и в этом случае вы будете знать, когда они завершатся. В худшем случае вы можете выполнить цикл setTimeout, который будет проверять каждые 100 мс или около того.

А проверка того, определена ли переменная, может быть просто if (myVariable) или более безопасной: if(typeof myVariable == "undefined")

...