【发布时间】:2021-12-28 07:56:28
【问题描述】:
我正在尝试练习 redux saga,
我有一个问题是没有从async await 返回数据。
使用以下代码:
/src/sagas/todos/index.js
export function* fetchTodosSaga() {
console.log('Ready to fetch Todos ...');
try {
const _todos = yield call(fetchTodos);
console.log(_todos); // Not a Result Data, It is a function
yield put({
type: "FETCH_TODOS_FULFILLED",
payload: {
todos: _todos
}
});
} catch (e) {
yield put({
type: "USER_FETCH_FAILED",
message: e.message
});
}
return 'Hello';
}
/src/actions/sagas/todos.js
export const fetchTodos = (params) => async (dispatch) => {
try {
const getTodosResponse = await todosAPI.getTodos(params);
console.log(getTodosResponse.data); // It is a CORRECT data
dispatch(fetchTodosAction(getTodosResponse.data));
return Promise.resolve(getTodosResponse.data);
} catch (error) {
return Promise.reject(error);
}
}
/src/services/api/todos/index.js
export default {
async getTodos() {
try {
return await axios.get(`${ baseUrl }/${ routes.todos }`);
} catch (error) {
return Promise.reject(error);
}
}
}
以及来自 chrome 检查器的控制台结果
ƒ (_x) {
return _ref.apply(this, arguments);
}
我应该如何解决这个问题?
【问题讨论】:
-
这样您就可以在数据库中成功后回调该函数,因此两者都是同步的
-
谢谢@AshishKamble,我还是不明白哪个部分可以回调?您介意尝试编码您的评论吗?
标签: javascript node.js reactjs async-await redux-saga