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

Angular Discussion :

Attribution de variable globale dans promise function


Sujet :

Angular

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Attribution de variable globale dans promise function
    Bonjour à tous

    J'essaie de réaliser une fonction toDataurl promise au sein de project angular qui permet de convertir une image d'assets en chaîne de base64.

    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
     
    toDataURL(url){
          var promise = new Promise(function (extract) {
            var xhr = new XMLHttpRequest();
            xhr.open('get', url);
            xhr.responseType = 'blob';
            xhr.onload = function(){
              var fr = new FileReader();
              var test = fr.onload = function(){
     
                extract(this.result);
                return this.result;
     
              };
     
              fr.readAsDataURL(xhr.response); // async call
            };
     
            xhr.send();
          });
     
          return promise;
        }
    Mais quand j'ai essayé d'attribuer son résultat à une variable globale base64result. Cette dernière se comporte comme une variable locale. Et je ne peux pas utiliser ce résultat dans les prochaines instructions.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       this.toDataURL(chemin).then((result) => {
              this.base64result=result
              console.log(result);
             });

    Que dois-je faire?

    Merci d'avance.

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

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Je suspecte un problème avec le this. Les fonctions flèches sont liées lexicalement, ça veut dire qu’elles n’ont pas leur propre contexte this. En clair, le this auquel tu attaches la propriété base64result est le même que celui auquel est attaché la méthode toDataURL.
    Est-ce que tu t’attendais à ce que ça se passe comme ça ?
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

Discussions similaires

  1. Variable Globale dans un module de formulaire.
    Par wisiwi dans le forum Access
    Réponses: 5
    Dernier message: 30/03/2006, 14h03
  2. utilisation des variables global dans tout le projet
    Par EYENGA Joël dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 12/01/2006, 10h55
  3. Variables globales dans une classe
    Par vanitom dans le forum C++
    Réponses: 16
    Dernier message: 14/01/2005, 14h40
  4. Variables globales dans fichiers entête
    Par benj_f04 dans le forum C++
    Réponses: 5
    Dernier message: 13/08/2004, 09h06
  5. Variable "globale" (dans plusieurs templa
    Par mattmat dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 17/06/2003, 19h22

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