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

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)

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.