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

TypeScript Discussion :

Async UnhandledPromiseRejection Warning


Sujet :

TypeScript

  1. #1
    Nouveau membre du Club
    Async UnhandledPromiseRejection Warning
    Bonjour,

    Je suis entrain d'utiliser Promise.reject
    Et j'ai cet erreur qui s'affiche:
    Unhandled promise rejection warning: version is not released
    Comment je peux résoudre ce warning?
    J'essaye d'utiliser try/catch mais je sais pas si je le fais correctement

    Merci pour votre aide

    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
     
    public async retrieveVersionFromJira(versionName: string): 
     Promise<ReleaseVersion> {
        try{
        const searchVersionsUri = config.jiraApiUri + 'versions';
        const jsonResp = await this.jiraClient.get(searchVersionsUri);
        const version: any = jsonResp.find(version => {
            if (version.name == versionName) {
                if (version.released == true) {            
                      return Promise.reject("version " + versionName + " is not released");
     
                }
            }
        });
        if (!version) {
            return Promise.reject("missing version " + versionName + " on jira");
        }
        return new ReleaseVersion(version.id, version.name, version.released);
    }
    catch{
       return Promise.reject("error test")
    }
    }

  2. #2
    Rédacteur



    Il me semble que jiraClient c'est du Java, rien à voir avec du JS, mauvais forum.

  3. #3
    Membre expérimenté
    Ça ressemble à du Typescript.

    Ton process est bizarre. Si version.released == true tu envoies le warning. Ça devrait être l'inverse:


    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            if (version.name == versionName) {
                if (!version.released) {
                    throw "version " + versionName + " is not released";
                }
            }


    Et pour être plus logique, tu peux changer la structure de ton 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
     
    public async retrieveVersionFromJira(versionName: string): Promise<ReleaseVersion> {
      try {
        const searchVersionsUri = config.jiraApiUri + 'versions';
        const jsonResp = await this.jiraClient.get(searchVersionsUri);
        const version: any = jsonResp.find(version => version.name === versionName);
     
        if (!version) {
          return Promise.reject("missing version " + versionName + " on jira");
        }
        if (!version.released) {
          return Promise.reject("version " + versionName + " is not released");
        }
        return new ReleaseVersion(version.id, version.name, version.released);
      }
      catch (err) {
        return Promise.reject("error test " + err.message)
      }
    }


    Parce que dans l'état actuel de ton code, le find ne fait rien. Ici, tu effectues d'abord un find tout simple pour trouver la version. Puis tu fais tes deux tests (si la version est trouvée, si la version est released). C'est plus facile de bien séparer les étapes!

  4. #4
    Expert éminent sénior
    C'est du TypeScript, j'ai déplacé dans le bon forum.
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  5. #5
    Membre éclairé
    Citation Envoyé par marcilles Voir le message

    Comment je peux résoudre ce warning?
    Remplace tous les return Promise.reject par des throw new Error.

###raw>template_hook.ano_emploi###