2010-09-28 5 views
2

Je dois être en mesure d'avoir un rappel sur l'exécution d'une fonction après prêtjquery rappel

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

quelle est la bonne façon de le faire?

+0

et quel est le problème? –

+0

Quel est le "quelque chose" que vous essayez, est-ce asynchrone? –

+0

Je n'ai aucun moyen sûr de connaître la fonction 1 est de finir avant de faire la finction 2 – menardmam

Répondre

2

qui suit exécuter une fois que le document a été chargé:

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

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

function SomethingElse() 
{ 
} 
0

oui cela est une bonne façon. vous pouvez utiliser: (function(){}); si vous n'utilisez pas javascripts libs autre que jQuery pour prêt

0

Vous pouvez laisser function1 appeler une deuxième fonction puis la troisième, et ainsi de suite. mais il est toujours ligne par ligne

1

JavaScript est monothread. Rien ne se passe simultanément. Cependant, si fn1 est un appel asynchrone, le thread exécutera fn2 souvent avant que la valeur de retour de fn1 soit prête. C'est ce qui rend JavaScript "racé".

Si vous avez plusieurs appels aysnc dans une série, vous devez alors gérer une série de rappels NESTED ou créer une file d'attente à l'aide du modèle Objet actif. jQuery en a un (mentionné). J'ai écrit une bibliothèque qui fait ce que l'on appelle proto-q: http://code.google.com/p/proto-q/