Function.waitfor : attendre une condition avant d'executer une fonction

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 604 fois - Téléchargée 26 fois

Contenu du snippet

Ce code rajoute une fonction statique à l'objet Function qui permet d'attendre que la condition soit vrai pour réaliser la fonction, c'est utile dans le cas d'une application "multithread" en javascript. Le concept se rapproche un peu des evenements.

//Les arguments :
condition : un string contenant un boolean, ou une fonction, qui indique si oui ou non on peut executer la fonction fnc
fnc : fonction qui sera executé lorsque la condition sera vrai
caller : objet dans lequel on execute la fonction
args : [optionel] Array contenant les différents arguments de la fonction
interval : [optionel] la durée entre laquelle on doit vérifier la condition, par défaut à 5ms

On peut l'utiliser ainsi,
Function.waitFor('this.isPageLoaded', this.displayPictures, this, ['pageLoad']);

Source / Exemple :


Function.parse = function(functionName){return eval(functionName);}

Function.waitFor = function(condition, fnc, caller, args, interval){
    var _condition = Function.parse.call(caller, condition);
    if (_condition && (typeof(_condition)=='function' ? _condition() : true))
        fnc.apply(caller, args || []);
    else
        window.setTimeout(function(){Function.waitFor(condition, fnc, caller, args || [])}, interval || 5);
}

Conclusion :


Pour bien comprendre cette source il vous faut comprendre la méthode apply de l'objet Function (http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Objects:Function:apply)

A voir également

Ajouter un commentaire

Commentaires

apxa
Messages postés
188
Date d'inscription
mercredi 15 mai 2002
Statut
Membre
Dernière intervention
25 avril 2009
-
iop,
Ca m'a l'air pas mal.
Au niveau browser ca fonctionne sous FF, IE, Opera, Mozila ?

Have Fun ;)
jesusonline
Messages postés
6827
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
17 -
Bonsoir,

Je pense que ca doit fonctionner sur la plupart des navigateurs récents puisque cela n'utilise que du js tout ce qu'il y a de plus "basique" :) j'utilise ca avec des sites qui fonctionne pour IE6 / IE7 / FF / Opera ...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.