2017-08-15 1 views
0

Comment est-ce que je peux écrire cette fonction plus nette, est-ce que le retour dans le rappel de timeout est la meilleure façon de le faire? Je demande parce que je suis nouveau aux promesses javascript.Comment chaîner les promesses en Javascript

getStuff(): Promise<any> { 
    let self = this; 

    return new Promise(function(resolve, reject) { 
     self.getData() 
      .then(function(resp) { 
       self.parse(resp); 
      }) 
      .then(function() { 
       setTimeout(function() {         
        resolve(); 
       }, 5000); 
      }); 
    }); 
} 
+0

Depuis ce taggés est ES6, vous pouvez éliminer au moins un certain encombrement en utilisant des fonctions de tableau. 'then (resp => this.parse (resp))'. Moins d'accolades et de mots-clés, pas besoin de soi. – Thilo

+0

Votre fonction est boucle infinie .... – codeSetter

+0

Pouvez-vous expliquer en mots ce que vous essayez d'accomplir parce que la combinaison de récursivité et de délai d'attente me laissent perplexes sur l'objectif de ce code et il est difficile de penser à la meilleure façon d'écrire ce. – jfriend00

Répondre

0

Voir l'exemple ci-dessous ...

getStuff(): Promise<any> { 
     let self = this; 

     return new Promise(function(resolve, reject) { 
      self.getData() 
       .then(function(resp) { 
        return self.parse(resp); //return here 
       }) 
       .then(function(resp2) { 
        setTimeout(function() {         
         resolve(resp2); 
        }, 5000); 
       }, 
       (err) => reject(err)); 
     }); 
    }