Stopper une fonction depuis une autre

bizibiz17 Messages postés 142 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 29 août 2009 - 24 nov. 2008 à 14:41
bizibiz17 Messages postés 142 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 29 août 2009 - 24 nov. 2008 à 17:04
Bonjour,

J'aimerais pouvoir stopper l'exécution d'une fonction depuis une autre. Je m'explique avec cet exemple :

function fct1()
{
   //instructions
}

function fct2()

{

   if(...)
    //stopper execution de fct1...

}

fct1();
fct2();

Merci pour vos réponses

6 réponses

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
24 nov. 2008 à 15:02
bonjour,

je ne pense pas qu'on puisse faire ça comme ça...
à moins que quelque chose ne m'échappe encore !
il y aura d'autres avis !

dans fct2 positionne une variable globale à true ( à initialiser à false )
et teste de "manière régulière" cette variable dans fct1
encore faut-il y avoir "la main" !

si boucle[s] dans fct1 :
fct1 peut-être à mettre en récursif avec setTimeout
et clearTimeout dans fct2.

une alternative est peut-être possible...
dans quelles conditions, pourquoi... vouloir faire ça ?

Cordialement

          [mon Site] [M'écrire] Bul         
0
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
24 nov. 2008 à 15:19
Même approche que Bul3 a la différence que je ne vois pas d'autre alternative.
0
bizibiz17 Messages postés 142 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 29 août 2009 1
24 nov. 2008 à 15:25
Merci pour ta réponse. J'ai déjà essayer la solution du clearTimeout
mais sans résultat et la solution de la variable globale me parait difficile
à mettre en place et ne fournirait pas exactement le résultat attendu car les instructions ne seraient pas arrêtées immédiatement.

Pourquoi vouloir faire cela ? Je vais essayer de donner un exemple :

var data;

var isLoading = false;


function init()

{

 if(isLoading)
//   arreter le déroulement de la fonction "mettreEnForme"

  data = ;

  mettreEnForme();

}


function mettreEnForme()

{

  isLoading = true:
 //Utilisation de data
 isLoading = false;

}




Voilà en gros et en simplifié pourquoi j'ai besoin de faire ça : car l'exécution de la méthode "mettreEnForme" n'est peut-être

pas finie quand elle est relancée et du coup cela cause des problèmes.
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
24 nov. 2008 à 16:17
>>la méthode "mettreEnForme" n'est peut-être
>>pas finie quand elle est relancée et du coup cela cause des problèmes
ah..ben là....

var encours= false   
dans fct2 : encours ?
                oui : patienter ( en relançant fct2 avec setTimeout )
                non ! encours=true
                       du boulot à faire.....
                       encours=false

          [mon Site] [M'écrire] Bul         
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
24 nov. 2008 à 16:52
ou si la fonction est appelée par le clik sur un bouton,
le cacher ( ou l'invalider ) tant que le  boulot n'est pas fini...
          [mon Site] [M'écrire] Bul         
0
bizibiz17 Messages postés 142 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 29 août 2009 1
24 nov. 2008 à 17:04
Le bouton en question il s'agit du back du navigateur donc ça va être dur de le cacher
Pour ce qui est du timeOut qui attend la fin de l'exécution précédente, c'est actuellement ce que je fais mais j'aurais préféré une solution qui permet une exécution immédiate des nouvelles instructions...
0
Rejoignez-nous