11548 sujets

JavaScript, DOM et API Web HTML5

Slt tlm,

je voudrais executer une fonction lorsque une autre fonction récursive (par setTimeout) a fini de travailler.

Voila ce que j'ai fait, mais c'est pas le top, car je ne peux pas enchainer plus de 2 fonctions.

maFonction = function(arg, fonction, fonctionArg){
...
if(continue) setTimout("maFonction(arg)", 1000);
else window[ fonction](fonctionArg);

}

maFonction(arg, "monAutreFonction", "arg");


Donc je voudrais savoir s'il n'y a pas une autre solution.


Merci bp!
+++
Modifié par maxroucool (30 Oct 2007 - 16:38)
Déjà pour commencer, cette ligne est fausse à plus d'un titre :
setTimout("maFonction(arg)", 1000); 

1 - c'est setTimeout
2 - tu ne passes pas réellement les arguments, si arg n'est pas une variable globale alors ça ne passera pas.
Salut maxroucool,
tu peux utiliser le principe de fermeture (closure) :

maFonction = function(arg, fonction, fonctionArg){
  ...
  if(continue) {
    setTim[b]e[/b]out(function() {
      maFonction(arg, fonction, fonctionArg);
    }, 1000);
  }
  else window[fonction](fonctionArg);
}

maFonction(arg, "monAutreFonction", "arg");