想请问下老师关于promise.then()的问题

来源:7-7 前端架构之抽象2:网络请求层封装( redux-thunk)(2)

hpbrave

2020-08-15

突然有点糊涂了,在request.js里,get函数是这样的:

function get(url){
	return fetch(url, {
		method: "GET",
		headers: headers
	}).then(response => {
		handleResponse(url, response)
	}).catch(err => {
		console.error(`Request failed. Url =  ${url}. Message=${err}`)
		return Promose.reject({error: {message: "Request failed."}})
	});
}

fetch()之后先用then处理成功的情况,再用catch处理有错误的情况。
但是在home.js里, loadLikes是这样的:

export const actions = {
    loadLikes: () => {
        return (dispatch, getState) => {
            dispatch(fetchLikesRequest());
            return get(url.getProductList(0, 10)).then(
                data => {
                    dispatch(fetchLikesSuccess(data))
                },
                error => {
                    dispatch(fetchLikesFailure(error))
                }
            )

        }
    }
}

在then()中传入两个函数,分别处理成功和失败的情况。请问老师,这两种写法是等价的吗?能互换吗?非常感谢!

写回答

1回答

hpbrave

提问者

2020-08-15

刚才查了查,得到了一种解释,不知道对不对:

then(f1, f2),这里f1处理前面函数成功的情况,f2处理前面函数失败的情况。

then(f1).catch(f2),这里f1仍然处理前面函数成功的情况,而f2处理f1失败的情况

0
2
hpbrave
回复
艾特老干部
非常感谢!
2020-08-22
共2条回复

React16+Redux实战企业级大众点评Web App

从架构设计到部署上线,带你学习React技术栈与核心思想

1071 学习 · 306 问题

查看课程