首页 > 文章列表 > ahooks的useRequest如何实现多接口请求的并发控制和顺序执行?

ahooks的useRequest如何实现多接口请求的并发控制和顺序执行?

496 2025-04-05

ahooks的useRequest如何实现多接口请求的并发控制和顺序执行?

ahooks useRequest:高效管理多接口请求

本文探讨如何使用ahooks的useRequest钩子函数,在处理多个API请求时实现并发控制和顺序执行。

并发控制:灵活掌控请求时机

useRequest本身不限制并发请求数量。您可以创建多个useRequest实例,并通过trigger.run()方法手动触发每个请求,从而精确控制并发。 这使得您可以根据实际需求,灵活地管理请求的执行时机,例如,限制同时进行的请求数量,避免服务器过载。

顺序执行:确保请求次序

若需确保API请求的执行顺序,可以使用自定义的sequence函数。该函数接收一个请求函数数组,并返回一个按顺序执行这些函数的异步函数。示例如下:

const sequence = (...apiFunctions) => {
  return async () => {
    for (const apiFn of apiFunctions) {
      await apiFn();
    }
  };
};

const fetch1 = () => {}; // 请求函数1
const fetch2 = () => {}; // 请求函数2
const fetch3 = () => {}; // 请求函数3

const fetchAllData = sequence(fetch1, fetch2, fetch3);

const { data, loading, error } = useRequest(fetchAllData, {});

这段代码将依次执行fetch1fetch2fetch3三个请求函数。

数据整合:统一管理请求状态

为了方便管理多个请求的结果,可以使用flattenDeps: true参数:

const { data, loading, error } = useRequest([...apiFunctions], { flattenDeps: true });

这样,useRequest将返回一个包含所有请求的dataloadingerror信息的统一对象,简化了状态管理的复杂度。 这使得您可以更轻松地根据所有请求的状态来更新UI。

来源:1740295138