2010-11-03 2 views
0

У меня есть функция, нажмите:Помощь с функциями JQuery выполнения преждевременно

jQuery("#element").click(function(e){ 

     var op = jQuery("#box").GetOp(); 
    op.flag1 = false; 
     op.flag2 = true; 
    executeFunction(); 
    jQuery("#box").reload(); 

}); 

Я хочу функции executeFunction(); и jQuery («# box»). reload(); для выполнения в последовательном порядке только после выполнения двух предыдущих строк.

EDIT: Функции должны выполняться синхронно.

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

Любые предложения?

ответ

2

Javascript по сути синхронный, поэтому, если ваш код не выполняется в последовательном порядке, возможно, executeFunction() вызывает некоторые асинхронные действия, такие как запросы AJAX или setTimeout/setInterval.

Возможное решение в этом случае передать функцию executeFunction() и вызвать его, когда поведение асинхронного сделано:

jQuery('#element').click(function(e){ 
    var op = jQuery('#box').GetOp(); 
    op.flag1 = false; 
    op.flag2 = true; 
    executeFunction(function(){ 
     jQuery('#box').reload(); 
    }); 
}); 

И меняется executeFunction(fn) вызвать функцию на успехе поведения асинхронного.

0

Как правило, JavaScript представляет собой однопоточное программирование. Но вы можете имитировать поток, используя setTimeOut для автоматического вызова определенной функции. Для исходного кода он должен работать синхронно, если вы не используете какой-либо оператор setTimeOut в любом методе.

Смежные вопросы