如何让其他函数在第一次执行后被调用?

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;
}