我想了解承诺异常处理在以下情况。第二个调试器语句首先停止,并记录一个错误。为什么是这样?我认为只有在'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'总是被执行。 –