首页 > 解决方案 > 异步函数内的回调异步函数!是正确的?

问题描述

我希望这个重用异步函数能在很多地方使用!

const requestGetData = (callback?: Function): void => {
      (async (): Promise<void> => {
        try {
          if (callback) {
            await callback();
          }
          const data = await getDataApi();
          setData(data);
        } catch (error) {
          console.log(error)
        }
      })();
  };

我有不同的异步功能:

  const requestUpdateData = async (): Promise<void> => {
      await postUpdate();
      setCountUpdate(count+1);
    };

我将使用:

...
const handleUpdate=()=>{
  requestGetData(requestUpdateData);
}

useEffect(()=>{
  requestGetData()
},[])

我自定义 async 是否正确?有没有更好的办法 ?我想重用函数 requestGetData

标签: javascriptreactjstypescriptaxiosreact-hooks

解决方案


考虑到当你调用函数时,你用 调用它await,这意味着你总是期望回调函数是异步的。我建议将回调参数的类型声明更新为() => Promise<any>,我不明白为什么这需要成为 IIFE。否则,我觉得很好。


推荐阅读