8
在react-native tutorial它說:爲什麼我們必須在react-native的promise鏈末尾調用`.done()`?
注意,我們稱之爲()完成的承諾鏈的末端 - 總是 確保調用完成()或拋出的任何錯誤都將得到吞噬。
fetchData: function() {
fetch(REQUEST_URL)
.then((response) => response.json())
.then((responseData) => {
this.setState({
movies: responseData.movies,
});
})
.done();
},
這是什麼空。 done()
居然呢?
「['then'函數中的未處理異常作爲promise的狀態的一部分靜靜捕獲,但'done'函數中的未處理異常被拋出](https://msdn.microsoft.com/zh-cn/我們/庫/窗/應用/ hh700337.aspx)。」如果你沒有做'完成',那麼發生的任何錯誤都存儲在承諾中,然後你將承諾扔掉,你永遠不會知道錯誤。 –
我想這是理解正在發生的事情的開始,但是這意味着所做的事情沒有引起爭論? 「完成」實際上是什麼_do_? – GreenAsJade
[文檔](https://msdn.microsoft.com/en-us/library/windows/apps/hh701079.aspx)解釋了當您不傳遞值時會發生什麼。 (基本上什麼也沒有發生。)問題是,如果沒有人處理它,'done'會引發異常,而'then'會將異常保存在promise中,以便將它傳播到下一個'then'調用中。問題是,如果沒有下一個'then',那麼異常永遠不會傳播到任何地方;它只是消失。結果是空的'done'意味着「立即提出任何未決異常。」 –