IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Rendre un traitement ajax bloquant ou faire un sleep/wait


Sujet :

JavaScript

  1. #1
    Membre habitué Avatar de mioux
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2005
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 367
    Points : 191
    Points
    191
    Par défaut Rendre un traitement ajax bloquant ou faire un sleep/wait
    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

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    un ajax synchrone ne te convient pas ?

  3. #3
    Membre habitué Avatar de mioux
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2005
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 367
    Points : 191
    Points
    191
    Par défaut
    on peut rendre un ajax synchrone ?

    En fait le truc c'est que mon AJAX fait un traitement, et en fonction, autorise ou non le POST du bouton à se lancer. Donc il faut que mon bouton ne finise son traitement QUE quand le traitement AJAX est terminé, sinon, il déclenche le post alors que mes données ne sont pas valides

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    ben il me semble bien que dans les paramètres du send il y a un true qui veux dire synchrone ...

    [edit]
    ou le contraire ... :red:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     AJAX.open("POST", url, false);

Discussions similaires

  1. [Traitement d'image] Comment faire un texte incrusté
    Par solorac dans le forum Webdesign & Ergonomie
    Réponses: 7
    Dernier message: 22/05/2008, 15h14
  2. [AJAX] [ajax struts datagrid]faire grid javacscript avec ajax
    Par Wessim dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 15/12/2006, 10h18
  3. Attente bloquante : comment faire?
    Par ®om dans le forum Général Java
    Réponses: 14
    Dernier message: 25/09/2006, 10h28
  4. [AJAX] Peut-on faire de l'AJAX avec ASPX
    Par Kylen dans le forum ASP.NET
    Réponses: 5
    Dernier message: 08/06/2006, 12h34
  5. Rendre la lecture non bloquante
    Par Charlinecha dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 05/07/2005, 15h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo