Partage
  • Partager sur Facebook
  • Partager sur Twitter

"Les Pomesses" du dimanche...

Sujet résolu
    19 janvier 2020 à 17:11:55

    Bonjour,

    Je voulais alléger un peu mon code en utilisant des promesses mais c'est pas si simple. 

    Pourriez-vous me m'éclairer sur ma bétise?

    function propovilles(f) {
    	var regex = /^[0-9]{5}$/;
    	if(regex.test(f.value)) {
    
    		var req = "action=ville&zip="+f.value;
    		ajax(req, "dialo")
    		.then(function(response) {
    			console.log(response);
    		})
    		.catch(function (error) {
    		    console.log(error.status);
    		    console.log(error.statusText);
    		})	
    	}
    }
    
    function ajax(action, next) {
        console.log(action+" - "+next);
    	return new Promise(function (resolve, reject) {
            var xhr = new XMLHttpRequest();
            xhr.open('GET', '....php?'+action)
            xhr.addEventListener('readystatechange', function(){
                if(xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
                	console.log(xhr.responseText);
                    switch(next) {
                        case "dispo" : affichedispo(xhr.responseText);
                        case "dialo" : return(xhr.responseText);     			
                	}
                } 
                else if (xhr.readyState === XMLHttpRequest.DONE && xhr.status != 200) { 
                    alert('Oups...problème');
                }
            });
            xhr.send(null);
        });
    }

    J'obtiens le résultat du consol.log de la requête Ajax mais pas le console.log(response) de la fonction propovilles. 

    • Partager sur Facebook
    • Partager sur Twitter
      19 janvier 2020 à 18:26:28

      Bonjour,

      Je ne te vois pas utiliser resolve() et reject() résultat then() et catch() ne seront jamais exécuter.
      + sur : http://ccoenraets.github.io/es6-tutorial-data/promisify/

      • Partager sur Facebook
      • Partager sur Twitter

          !

        19 janvier 2020 à 21:29:09

        C'était bien ça : resolve () au lieu de return().

        Merci :)

        • Partager sur Facebook
        • Partager sur Twitter

        "Les Pomesses" du dimanche...

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown