2009-07-30 8 views
0

j'ai quelque chose comme ceci:jQuery exécution de la fonction de pause et faire quelque chose d'autre en mode pause

function doSomething() { 
    var obj = $('somediv'); 

    ... 

    waitAndDoSomethingElse(obj); 

    ... 

    $('somediv').show(); 
    ... 
} 


function waitAndDoSomethingElse(obj) { 
    obj.fadeIn(); 
    .... 
} 

Je veux doSomething() pour mettre en pause ... exécuter waitAndDoSomethingElse(), puis continuer ... Des idées?

Merci

EDIT:

Je vais essayer d'expliquer mieux, désolé si ma question était confuse ...

function showSomething() { 
    var whatToShow = $('#div'); 

    doSomethingElse(); 

    whatToShow.fadeIn('slow'); 
} 


function doSomethingElse() { 
    $('#someDiv').appendTo($('#someOtherDiv')); 
    $('#somethingElse').fadeIn('slow'); 
    ... 
} 

Dans cet exemple whatToShow.fadeIn se déclenche sans attendre pour faire quelque choseElse pour finir ...

+0

Vous devriez changer votre question pour être plus clair. Nous avons des problèmes pour comprendre exactement ce que vous voulez. Peut-être un autre exemple, ou un cas de test. –

Répondre

4

Utilisez les rappels d'animation. Toutes les animations les ont comme dernier argument. Voir here pour les documents fadeIn.

$('#someElement').fadeIn('slow', callbackFn); 


    function callbackFn(){ 
     //executed after the fadeIn is complete 
    } 

Si vous n'utilisez pas les aides d'animation, vous pouvez utiliser la même méthodologie et de transmettre les fonctions de rappel à d'autres fonctions qui peuvent choisir quand appeler le rappel.

var callbackFn = function(){ //do something }; 

doSomething(callbackFn) 

function doSomething(callback){ 

    doOtherStuff(); 
    //call the callback 
    callback && callback() 

} 

Une autre option consiste à utiliser window.setTimeout pour déclencher une fonction après x millisecondes.

+0

Ouais ... je sais sur le callBack dans les effets ... J'ai mis un effet juste un exemple ... ce que je dois faire est exactement la même chose, mais avec des fonctions génériques ... – noboruwatanabe

+2

@noboruwatanabe : Editer votre question –

+1

Vraiment, une question moche, et ne pas vous faire des faveurs avec vos commentaires/réponses non-amicales – redsquare

0

Pour ce faire,

function doSomething() { 
    var obj = $('somediv'); 
    ... 
    waitAndDoSomethingElse(obj); 
} 


function waitAndDoSomethingElse(obj) { 
    obj.fadeIn(); 
    // if you want a pause here you can also add the next call in a setTimeout() 
    $('somediv').show(); // this call is executed only after 
} 
+1

bien que je ne reçois pas les votes vers le bas ... cette solution est correcte à sa question. Si quelqu'un en a de meilleurs, pas de problème, mais un downvote signifie une mauvaise solution et devrait être expliqué. Sinon, quel est le point d'aider? –

+0

le problème ici est ... si j'exécute quelque chose d'autre dans la fonction doSomething après le waitAndDoSomethingElse ... qui sera exécuté sans attendre que waitAndDoSomethingElse se termine ... retour à la question principale – noboruwatanabe

+0

Il a déclaré qu'il ne fait pas ne veulent pas utiliser setTimeout et nous ne sommes pas vraiment sûr de ce qu'il veut ... Il a downvoted tout le monde ... –

Questions connexes