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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 975 fois - Téléchargée 28 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
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
19 avril 2006 à 00:45
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 ...
apxa Messages postés 188 Date d'inscription mercredi 15 mai 2002 Statut Membre Dernière intervention 25 avril 2009
19 avril 2006 à 00:38
iop,
Ca m'a l'air pas mal.
Au niveau browser ca fonctionne sous FF, IE, Opera, Mozila ?

Have Fun ;)

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.