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 :

return de fonction undefined


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    auto entrepreneur
    Inscrit en
    Mai 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : auto entrepreneur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2019
    Messages : 8
    Par défaut return de fonction undefined
    bonjour,

    je souhaite utiliser tel quel une requete mais quand j'affecte le retour a une variable le resultat est undefined alors que dans la boucle chain est bien une string. j'ai essaye en long, en large et meme en travers, le resultat est toujours le meme.
    merci de m'expliquer les tenants et aboutissants

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    function updatePhoto(user,indexPhoto,publicCount){
    	var chain;
    	let imagePerPage = 50;
    	let position = (indexPhoto - 1) % (imagePerPage * 10);
    	let page = Math.trunc((indexPhoto - 1) / imagePerPage) + 1;
    	let pageMin = Math.trunc((page - 1) / 10) * 10 + 1;
    	let file2Load = "pages_" + pageMin + "_" + (pageMin + 9) + ".txt";
    	//console.log(file2Load);
    	let pageMax = Math.trunc((publicCount - 1) / imagePerPage) + 1;
    	if (pageMax <= (pageMin + 9) && pageMax >= pageMin && publicCount > (10 * imagePerPage))
    	{
    		var file2LoadMore = "pages_" + (pageMin - 10) + "_" + (pageMin - 1) + ".txt";
    	}
    	if (pageMin == 1 && publicCount > (10 * imagePerPage))
    	{
    		var file2LoadMore = "pages_" + (pageMin + 10) + "_" + (pageMin + 19) + ".txt";
    	}
    	if (pageMin > 1 && position < 250)
    	{
    		var file2LoadMore = "pages_" + (pageMin - 10) + "_" + (pageMin - 1) + ".txt";
    	}
    	if (pageMin > 1 && position >= 250)
    	{
    		var file2LoadMore = "pages_" + (pageMin + 10) + "_" + (pageMin + 19) + ".txt";
    	}
    	console.log(file2Load);
    	let result = getFile(file2Load);
    	console.log(result);
    }
     
     
     
    function getFile(file2Load) {
    	let url = "http://127.0.0.1/wp-content/data/upload_date/" + file2Load;
    	let xhttp = new XMLHttpRequest();
    	xhttp.onreadystatechange = function() {
    		if (this.readyState == 4 && this.status == 200) 
    		{
    			chain = (this.responseText);
    			return chain;
    		}
    	}
    	xhttp.open("GET", url, true);
    	xhttp.send();
    }

  2. #2
    Membre extrêmement actif
    Avatar de Sodium
    Femme Profil pro
    Développeuse web
    Inscrit en
    Avril 2014
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeuse web

    Informations forums :
    Inscription : Avril 2014
    Messages : 2 324
    Billets dans le blog
    1
    Par défaut
    Ta fonction loadFile retourne quelque chose quand elle a reçu une réponse. Ca ne marche pas comme ça, quand tu appelles une fonction qui fait un truc asynchrone, l'appel ne va pas attendre le résultat pour exécuter le reste du code. Au moment précis où tu appelles loadFile la fonction ne retourne rien, donc ta variable ne contient rien.

  3. #3
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 099
    Par défaut
    Tu peux « promisifier » ta fonction getFile et utiliser la syntaxe async / await pour n’avoir qu’un minimum de changements à apporter dans le code.
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    "use strict"; // voir https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Strict_mode
    let chain;
     
    async function updatePhoto(user, indexPhoto, publicCount) {
      let imagePerPage = 50;
      let position = (indexPhoto - 1) % (imagePerPage * 10);
      let page = Math.trunc((indexPhoto - 1) / imagePerPage) + 1;
      let pageMin = Math.trunc((page - 1) / 10) * 10 + 1;
      let file2Load = "pages_" + pageMin + "_" + (pageMin + 9) + ".txt";
      let file2LoadMore;
      //console.log(file2Load);
      let pageMax = Math.trunc((publicCount - 1) / imagePerPage) + 1;
      if (pageMax <= (pageMin + 9) && pageMax >= pageMin && publicCount > (10 * imagePerPage))
      {
        file2LoadMore = "pages_" + (pageMin - 10) + "_" + (pageMin - 1) + ".txt";
      }
      if (pageMin == 1 && publicCount > (10 * imagePerPage))
      {
        file2LoadMore = "pages_" + (pageMin + 10) + "_" + (pageMin + 19) + ".txt";
      }
      if (pageMin > 1 && position < 250)
      {
        file2LoadMore = "pages_" + (pageMin - 10) + "_" + (pageMin - 1) + ".txt";
      }
      if (pageMin > 1 && position >= 250)
      {
        file2LoadMore = "pages_" + (pageMin + 10) + "_" + (pageMin + 19) + ".txt";
      }
      console.log(file2Load);
      let result = await getFile(file2Load);
      console.log(result);
    }
     
    function getFile(file2Load) {
      return new Promise((resolve, reject) => {
        let url = "http://127.0.0.1/wp-content/data/upload_date/" + file2Load;
        let xhttp = new XMLHttpRequest();
        xhttp.onreadystatechange = function() {
          if (this.readyState == 4 && this.status == 200)
          {
            resolve(this.responseText);
          }
        }
        xhttp.open("GET", url, true);
        xhttp.send();
      });
    }
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

Discussions similaires

  1. paramètre fonction undefined
    Par dubitoph dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 11/02/2009, 19h04
  2. Réponses: 59
    Dernier message: 09/11/2007, 17h02
  3. Argument de fonction "undefined"
    Par bigben89 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/08/2007, 14h27
  4. [Yahoo UI] Return sur fonction (yui)
    Par vraipolite dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 18/04/2007, 17h21

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