Javascript ждать переменную - PullRequest
       7

Javascript ждать переменную

0 голосов
/ 06 января 2011

У меня есть служебная переменная, которая инициализируется:

service = new google.gdata.calendar.CalendarService('timeless');

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

Основная проблема будет в том, если пользователь попытается нажать кнопку, которая вызывает одну из этих функций.Как я могу заставить функцию ждать?Если бы я использовал спин-блокировку, это убило бы браузер.

Мне нужна какая-то псевдо-мьютекс или функция ожидания / сна.Я не думаю, что setTimeout поможет.

Спасибо.

Ответы [ 2 ]

1 голос
/ 06 января 2011

Представьте уровень косвенности: вместо того, чтобы код onclick () вызывал такие функции напрямую, он должен вызывать переменную, которая изначально содержит функцию, которая ничего не делает (или, возможно, отображает сообщение об ошибке, или иным образом обрабатываетусловие), то после инициализации service получает действительную назначенную ему функцию:

.
.
var indirection = { func1: function(){}, func2: function(){} }
.
.
<element onClick = "indirection.func1()"></element>
.
.
service = new google.gdata.calendar.CalendarService('timeless');
indirection.func1 = functionThatUsesService
.
.
1 голос
/ 06 января 2011

как насчет этого?

$(initservice);

function initOtherSTuff(){
//init other stuff
}

function initService(initCalled){
    if(!initCalled){
        service = new google.gdata.calendar.CalendarService('timeless');
    }
    else if(!service){
        window.setTimeout(function(){initService(true);},500);
    }
    else{
        initOtherStuff();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...