我想要建立一個簡單的CRUD應用程序。用戶有個人資料頁面,可以填寫有關自己的字段並保存。我的問題是:承諾,不火「然後」如果錯誤發生
我使用HTTP請求愛可信(在終極版應用程序):
export const createCard = (data) => (dispatch) =>
axios.post('/api/cards', data)
.then(
response => dispatch({
type: actions.CREATE_CARD_SUCCESS,
card: response.data
})
error => dispatch({
type: actions.CREATE_CARD_FAILURE,
message: error.message
})
)
.then(() => /* do something here, if no error occur */);
,並要求已成功完成後,我想要做的東西,然後方法。但它觸發始終,即使錯誤有發生
這可以這樣實現:
export const createCard = (data) => (dispatch) =>
axios.post('/api/cards', data)
.then(
response => {
dispatch({
type: actions.CREATE_CARD_SUCCESS,
card: response.data
});
},
error => {
dispatch({
type: actions.CREATE_CARD_FAILURE,
message: error.message
});
return error;
}
)
.then(error => {
if (!error) {
/* do something here, if no error occur */
}
});
但實在是太多了樣板。
在這種情況下,Jquery.ajax方便。
$.ajax()
.done()
.fail()
.always()
.then(() => { /** this callback will be fired if no error occur **/})
如何在axios或fetch api中模擬此行爲?
好吧,正如我所看到的,沒有辦法讓像jquery中的邏輯。我所能做的就是拋出一個錯誤。謝謝你們兩位的回答<3 –
@SmikeNelipov - 你是什麼意思「讓邏輯像jQuery」? – jfriend00
jquery not fire .then after .fail '$ .ajax(... options).done()。fail()。then(/ *如果.fail回調捕獲錯誤,則不會觸發此回調* /) ' –