Salut

Je cherche sur le web depuis un bon moment comment faire un sleep en javascript, et toutes les réponses que je trouve sont "c'est pas possible" (ce qui n'est guerre encourageant)

En fait j'ai une fonction en AJAX (traitée par .NET donc je n'ai pas de contrôle sur le code qui fais l'appel à l'objet XMLHTTPRequest) et je voudrait bloquer mon traitement javascript tant que le traitement AJAX n'est pas terminé.

Pour le moment j'ai ca, mais c'est vraiment pas cool du tout

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
var waitAssync = false;
 
function t(resultat, contexte) // fonction appellée au retour de la fonction AJAX
{
    eval(resultat);
 
    waitAssync = true;
}
 
function e(resultat, contexte) // fonction appellée en cas d'erreur de traitement dans la procédure AJAX
{
    alert(resultat);
 
    waitAssync = true;
}
 
function verifier()
{
    waitAssync = false;
 
    <% ClientScript.GetCallbackEventReference(this, "parametres", "t", "c", "e", true) %>; // Ce morceau de code invoque la procédure AJAX
    //WebForm_DoCallback('__Page','parametres',t,c,e,true); 
    // parametres, c'est la liste des paramètres
    // à envoyer à la page AJAX, pas les paramètres pour
    // l'appel à la procédure, '__Page' est la référence à
    // l'objet Page de .NET coté serveur et "c" je m'en sers pas, j'ai
    // pas encore compris ce que c'était ^^
 
    while(!waitAssync);
}
Je cherche à virer le while(!waitAssync); qui va bouffer tous le temps processeur