如何让其他函数在第一次执行后被调用?
How to make other function gets called after first is executed?
我正在开发一个 React 应用程序,我在其中使用 redux 进行状态管理,我有 2 个函数要调用,我希望它们仅在第一个函数执行后 运行。
这是我正在做的事情的片段:
if (this.props.page_num < this.props.numPages) {
this.props.fetchCode(params, isFiltered, isSearched).then(() => {
this.props.setPageNumber(this.props.page_num + 1);
});
}
这里我收到一条错误消息:
CodeTable.jsx?2468:132 Uncaught TypeError: this.props.fetchCode(...).then is not a function
fetchCode 函数:
export function* fetchCode(action) {
try {
const response = yield call(Services.fetchCode, action.params);
const { dtoList } = response.data.pagedList;
const num_pages = response.data.pagedList.numPages;
const total_records = response.data.pagedList.totalRecords;
const page_number = response.data.pagedList.pageNumber;
const postCodeSetsData = dtoList.map(({
}) => ({
}));
yield put(ActionCreator.setCodes(dtoList, num_pages, total_records, postCodeData, page_number, action.isFiltered, action.isSearched));
} catch (error) {
sagaException(error);
}
}
既然你正在使用 redux saga,我认为最合适的做法是编写另一个 saga。
export function* fetchCodeSetsAndSetPage(action) {
try {
yield put (ActionCreator.fetchCodes(...));
yield put (ActionCreator.setPageNumber(...));
} catch (error) {
sagaException(error);
}
}
然后在您的组件中调用那个。
一些docs.
使 fetchCodeSets 函数异步。您只能使用异步函数来编写 promise。还在函数内部使用 return 语句。 fetchCodeSets函数的声明应该是这样的
const fetchCodeSets = async (params) => {
//codes here
return;
}
我正在开发一个 React 应用程序,我在其中使用 redux 进行状态管理,我有 2 个函数要调用,我希望它们仅在第一个函数执行后 运行。
这是我正在做的事情的片段:
if (this.props.page_num < this.props.numPages) {
this.props.fetchCode(params, isFiltered, isSearched).then(() => {
this.props.setPageNumber(this.props.page_num + 1);
});
}
这里我收到一条错误消息:
CodeTable.jsx?2468:132 Uncaught TypeError: this.props.fetchCode(...).then is not a function
fetchCode 函数:
export function* fetchCode(action) {
try {
const response = yield call(Services.fetchCode, action.params);
const { dtoList } = response.data.pagedList;
const num_pages = response.data.pagedList.numPages;
const total_records = response.data.pagedList.totalRecords;
const page_number = response.data.pagedList.pageNumber;
const postCodeSetsData = dtoList.map(({
}) => ({
}));
yield put(ActionCreator.setCodes(dtoList, num_pages, total_records, postCodeData, page_number, action.isFiltered, action.isSearched));
} catch (error) {
sagaException(error);
}
}
既然你正在使用 redux saga,我认为最合适的做法是编写另一个 saga。
export function* fetchCodeSetsAndSetPage(action) {
try {
yield put (ActionCreator.fetchCodes(...));
yield put (ActionCreator.setPageNumber(...));
} catch (error) {
sagaException(error);
}
}
然后在您的组件中调用那个。
一些docs.
使 fetchCodeSets 函数异步。您只能使用异步函数来编写 promise。还在函数内部使用 return 语句。 fetchCodeSets函数的声明应该是这样的
const fetchCodeSets = async (params) => {
//codes here
return;
}