Javascript 为什么redux thunk的回归承诺?
作为一名初学者,我正在学习redux thunk中间件,我不明白为什么这个函数(由redux thunk返回)返回一个承诺(由fetch()返回) 我试着不归还任何东西,但它成功了,那么我们为什么要归还它呢Javascript 为什么redux thunk的回归承诺?,javascript,reactjs,redux,middleware,redux-thunk,Javascript,Reactjs,Redux,Middleware,Redux Thunk,作为一名初学者,我正在学习redux thunk中间件,我不明白为什么这个函数(由redux thunk返回)返回一个承诺(由fetch()返回) 我试着不归还任何东西,但它成功了,那么我们为什么要归还它呢 export function getCourses() { return fetch(baseUrl) .then(handleResponse) .catch(handleError); } export function loadCourses() { ret
export function getCourses() {
return fetch(baseUrl)
.then(handleResponse)
.catch(handleError);
}
export function loadCourses() {
return function(dispatch) {
dispatch(beginApiCall());// dispatch some synchronous action
return courseApi
.getCourses().then(courses => {
dispatch(loadCourseSuccess(courses));
}).catch(error => {throw error;});
};
}
对于名为MyComponent的组件,分派loadCourses()操作
首先,函数返回一些数据,因为您要求它返回某种结果
返回函数(dispatch){…}
。
如果要忽略返回的结果,只需从返回函数(dispatch){…}
中删除返回
其次,函数返回一个承诺,这是因为您编写了对API函数的调用(包装在承诺中,在函数完成时不返回回调)
如果希望获得API调用的实际结果,则应使用Async/Await语法 首先,函数返回一些数据,因为您要求它返回某种结果
返回函数(dispatch){…}
。
如果要忽略返回的结果,只需从返回函数(dispatch){…}
中删除返回
其次,函数返回一个承诺,这是因为您编写了对API函数的调用(包装在承诺中,在函数完成时不返回回调)
如果希望获得API调用的实际结果,则应使用Async/Await语法 对于普通的基本Redux存储,您只能通过调度操作来执行简单的同步更新。中间件扩展了存储的功能,并允许您编写与存储交互的异步逻辑 Thunks是基本Redux副作用逻辑的推荐中间件,包括需要访问存储的复杂同步逻辑,以及简单的异步逻辑(如AJAX请求) thunk中间件知道如何将thunk异步操作转换为操作,因此您只需将简单的_action()设置为thunk,如果中间件看到正常操作,thunk中间件将为您完成这项工作,他会将此操作作为普通操作分派,但如果它是异步函数,则会将您的异步操作转变为普通操作
您还可以看到使用普通的基本Redux存储,您只能通过调度操作来执行简单的同步更新。中间件扩展了存储的功能,并允许您编写与存储交互的异步逻辑 Thunks是基本Redux副作用逻辑的推荐中间件,包括需要访问存储的复杂同步逻辑,以及简单的异步逻辑(如AJAX请求) thunk中间件知道如何将thunk异步操作转换为操作,因此您只需将简单的_action()设置为thunk,如果中间件看到正常操作,thunk中间件将为您完成这项工作,他会将此操作作为普通操作分派,但如果它是异步函数,则会将您的异步操作转变为普通操作 你也可以看到我想我(从一位同事那里)得到了答案 如果你想连锁某些活动,你的行动需要回报一个承诺 这是一种在返回结果后允许链接活动的好方法 我想我(从一位同事那里)得到了答案 如果你想连锁某些活动,你的行动需要回报一个承诺
这是一种在返回结果后允许链接活动的好方法 你的确切功能是什么
loadCourses
或嵌套的匿名函数(dispatch)
?下面是一个很好的示例,展示了(返回承诺)的实际作用:(请参见第一条注释)。您所指的确切函数是什么loadCourses
或嵌套的匿名函数(dispatch)
?下面是一个很好的例子,说明了(返回承诺)的作用:(参见第一条注释)。我认为这一行会将异步动作转换为正常动作
有点误导。thunk MW所做的一切就是使用dispatch
、getState
和可选的额外参数调用thunk(函数),并返回thunk返回的内容。我认为这一行将异步操作转换为正常操作
有点误导。thunk MW所做的就是使用dispatch
、getState
调用thunk(一个函数),并可以选择传递额外的参数,然后返回thunk返回的内容。
function MyComponent(props){
.......
useEffect(() => {
loadCourses()
});
const mapDispatchToProps = {
loadCourses,
.....
}
}