Stopper une fonction depuis une autre

Signaler
Messages postés
142
Date d'inscription
mardi 17 janvier 2006
Statut
Membre
Dernière intervention
29 août 2009
-
Messages postés
142
Date d'inscription
mardi 17 janvier 2006
Statut
Membre
Dernière intervention
29 août 2009
-
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

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
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         
Messages postés
626
Date d'inscription
samedi 28 septembre 2002
Statut
Membre
Dernière intervention
18 mai 2009
3
Même approche que Bul3 a la différence que je ne vois pas d'autre alternative.
Messages postés
142
Date d'inscription
mardi 17 janvier 2006
Statut
Membre
Dernière intervention
29 août 2009
1
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.
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
>>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         
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
11
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         
Messages postés
142
Date d'inscription
mardi 17 janvier 2006
Statut
Membre
Dernière intervention
29 août 2009
1
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...