为什么这里没有出现承诺拒绝?我尝试调试它,但是原因永远不会执行
axios.post('http://localhost:5000/', {
contractId: contractValue
}).then(() => {
setLoading(false)
setButton(null)
}, (reason) => {
console.log(reason)
})
答案 0 :(得分:0)
您可以添加.catch
块来处理抛出的所有异常,而不是将函数作为第二个参数传递
axios.post('http://localhost:5000/', {
contractId: contractValue
}).then(() => {
setLoading(false)
setButton(null)
}).catch((reason) => {
console.log(reason)
})
答案 1 :(得分:0)
请尝试将catch
放入承诺链。它将捕获之前链中的所有异常。看起来像这样:
axios.post('http://localhost:5000/', {
contractId: contractValue,
})
.then(() => {
setLoading(false)
setButton(null)
})
.catch(err => {
// this is where you handle your exception
console.log(err)
})
答案 2 :(得分:0)
onRejected永远不会处理来自同一.then(onFulfilled)回调的被拒绝的承诺,而.catch会接受这两个承诺。
const getPromise = () => new Promise((resolve, reject) => { Math.round(Math.random()) ? resolve('resolve #1') : reject('reject #1')})
getPromise().then(result => { throw new Error('reject #2')}, error => { // Handles only 'reject #1'})
getPromise().then(result => { throw new Error('reject #2')}) .catch(error => { // Handles both 'reject #1', // and 'reject #2' }))