2017-08-15 21 views
0

我該如何寫這個函數neater,是否正在返回,然後在超時回調中解析它,這是做這件事的最好方法嗎?我問,因爲我是JavaScript新承諾。如何在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

由於這是標記ES6,你至少可以通過使用陣列功能刪除一些混亂。 '然後(resp => this.parse(resp))'。更少的括號和關鍵字,不需要'self'。 – Thilo

+0

你的函數是無限循環.... – codeSetter

+0

你能用文字解釋你正在嘗試完成什麼,因爲遞歸和超時的結合讓我對這段代碼的目的感到困惑,並且很難想到寫出最好的方法這個。 – jfriend00

回答

0

請參見下面的例子...

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)); 
     }); 
    }