2010-09-28 5 views
2

мне нужно, чтобы иметь возможность обратного вызова на выполнение функции после готовойJQuery обратного вызова

jQuery(document).ready(function() {  
    execute function 1, only when finish 
     do function 2 
}); 

, что это хороший способ сделать это?

+0

и в чем проблема? –

+0

Что такое «что-то», которое вы пытаетесь, асинхронно? –

+0

У меня нет уверенного способа узнать, что функция 1 заканчивается, прежде чем делать финиш 2 – menardmam

ответ

2

Следующая выполнить после загрузки документа:

$(function(){ 
    DoSomething(); 
}); 

function DoSomething() 
{ 
    SomethingElse(); // depends what you're doing in DoSomething() 
} 

function SomethingElse() 
{ 
} 
0

да это хороший способ. вы можете использовать: (function(){});, если вы не используете javascripts libs, кроме jQuery для готовых

0

вы можете позволить функции1 вызвать вторую функцию, затем третью и т. д. но это все линии по строке

1

JavaScript однопоточный. Ничего не происходит одновременно. Однако, если fn1 является асинхронным вызовом, поток будет выполнять fn2 часто до того, как будет возвращено возвращаемое значение fn1. Именно это делает JavaScript «ярким».

Если у вас несколько вызовов aysnc в серии, вам необходимо либо выполнить серию обратных вызовов NESTED, либо сделать очередь с использованием шаблона Active Object. В jQuery есть один (упомянутый). Я написал библиотеку, которая делает это под названием proto-q: http://code.google.com/p/proto-q/

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