11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour j'aimerai savoir s'il existe un moyen pour synchroniser une function javascript proprement. J'aimerais empécher d'avoir plusieur accès simultané de ma function qui partage des variables global.



var uid = 0;

function maFonction() { // méthode à synchroniser
    ...
    uid = uid + x;
    ...
}


en fait ce que je recherche est l'équivalent de synchonized en java sur ma fonction.
Modifié par upton (29 May 2006 - 12:11)
Étonnament, synchronized est considéré comme un mot-clé du javascript bien qu'il n'ait absolument aucune utilité.

Peut-être une idée :

var variable_globale_bidon = false;

function ma_fonction_synchro () {
if (variable_globale_bidon) {
setTimeout("ma_fonction_synchro();", 1000);
return;
}

variable_globale_bidon = true;

// Traitement 

variable_globale_bidon = false;
}


J'ai pas l'impression qu'on puisse vraiment faire mieux.
var uid;

function maFonction() { 
    
if(!uid){
    uid="valeur";
    // traitement
}

uid=false;

}


avec un transtypage qui ne pose aucun problème en js;
Tout d'abord merci pour vos réponses.

pour Javatwister, le problème étant que ma variable doit garder l'identifiant unique et l'incrémenter à chaque fois d'un nombre X. Du coup je ne pense pas m'en tirer avec cette solution.

pour Quentinc, et oui moi aussi j'ai vu que synchronized était un mot réservé mais hélas par encore implémenté Smiley decu
En tout cas ta méthode me parait pas mal Smiley biggrin
donc je vais l'essayer ^^
humm en fait en testant la méthode j'ai vu que ce n'était pas très efficasse.
Donc finalement j'ai préféré utiliser une liste FIFO et cela correspond mieux à mes attentes de monté en charge ^^