如何从承诺中获得回报

时间:2020-01-14 12:20:27

标签: reactjs promise axios

我想通过axios获取数据以设置标头,但是getAxios1和2似乎更慢,然后返回标头需要刷新以重新加载标头。 如何在getAxios1和2之后制作返回标头。

我尝试执行以下代码来逐步获取数据然后输出标头,但仍然无法正常工作。

export const getHeader = (props: IAppProps) => {
  const promises = [];
  promises.push(getAxios1());
  promises.push(getAxios2());
  Promise.all(promises).then(d => {
  return   (<ErrorBoundary>
          <Header
          isAuthenticated={props.isAuthenticated}
          isAdmin={props.isAdmin}
          isUser={props.isUser}
          isFoPayroll={props.isStaff}
          ribbonEnv={props.ribbonEnv}
          isInProduction={props.isInProduction}
          isSwaggerEnabled={props.isSwaggerEnabled}
        />);
  });

1 个答案:

答案 0 :(得分:0)

export const getHeader = (props: IAppProps) => {
  const [fetched, setFetchStatus] = useState(false);
  const [data, setData] = useState(null);
  const promises = [];
  promises.push(getAxios1());
  promises.push(getAxios2());
  Promise.all(promises).then(d => {
    setFetchStatus(true);
    setData(d);
  });

  // use data 
  return  fetched && (<ErrorBoundary>
          <Header
          isAuthenticated={props.isAuthenticated}
          isAdmin={props.isAdmin}
          isUser={props.isUser}
          isFoPayroll={props.isFoPayroll}
          ribbonEnv={props.ribbonEnv}
          isInProduction={props.isInProduction}
          isSwaggerEnabled={props.isSwaggerEnabled}
        />);

还添加另一个状态来保存获取的数据。 我已编辑。希望对您有帮助