我想了解承諾異常處理在以下情況。第二個調試器語句首先停止,並記錄一個錯誤。爲什麼是這樣?我認爲只有在'then'塊發生錯誤時才能輸入異常塊?Javascript承諾異常處理
api.then(response => {
debugger; //1
dispatch(fetchReceive(response)); //never executes
})
.catch((err) => {
debugger; //2
console.error(err); //err.status = 404
});
我用下面的NPM包:
"babel-cli": "6.14.0",
"babel-core": "6.9.1",
"babel-loader": "6.2.4",
"babel-plugin-transform-class-properties": "6.10.2",
"babel-plugin-transform-object-rest-spread": "6.8.0",
"babel-plugin-transform-react-constant-elements": "6.9.1",
"babel-plugin-transform-react-inline-elements": "6.8.0",
"babel-polyfill": "6.16.0",
"babel-preset-es2015": "6.9.0",
"babel-preset-es2017": "6.16.0",
"babel-preset-react": "6.5.0",
"babel-register": "6.9.0",
如果'api'是被拒絕的承諾,它也可以被輸入,而不需要'.then',所以你的問題與babel無關,它只是Promises的工作方式 –
其實它取決於'api '因爲'api'可能拋出被拒絕的承諾或在處理它時拋出異常。如果api執行成功,那麼'block'總是被執行。 –