2016-05-14 75 views
3

陣營本地的文檔說:如果我有catch(),是否需要在承諾鏈的末尾調用done()?

注意,我們稱之爲()完成的承諾鏈的末端 - 始終確保調用完成()或拋出的任何錯誤都將得到吞噬。

當我最後有一個catch塊時,是否需要考慮?

dataLayer.enter() { 
.then((responseData) => { 

     console.log('enter responseData ->', responseData); 

}) 
.catch(function(error) { 

    console.log('enter error ->', error) 

}); 

回答

0

如果您catch塊沒有問題,那麼就沒有必要到done()添加到鏈的末端。在你提供的例子中,它應該沒問題。但是,如果catch做了類似於嘗試輸出值this.state.foo的內容,則會生成一個可能被吞噬的錯誤。 (之所以this.state.foo不適用於我的潛在問題的示例,是因爲您擁有的catch函數未綁定到this上下文,並且會導致錯誤。)在promise鏈的末尾添加.done()是很好的形式,多一點保險。

建議代碼更新:

dataLayer.enter() { 
    .then((responseData) => { 

    console.log('enter responseData ->', responseData); 

    }) 
    .catch(error => { 

    console.log('enter error ->', error) 

    }) 
    .done(); 
相關問題