Skip to content

TonicFizzRicky/react-use-async-pool

Repository files navigation

react-use-async-pool

npm version CI

简体中文 | 英文

react-use-async-pool 是一个 react hook,支持对异步函数进行并发控制

主要解决 Promise.all 在并发大量请求时,无法限制并发数的缺陷

以及 Promise.all 无法获取当前异步请求进度


文档

https://react-use-async-pool.netlify.app/

示例

https://stackblitz.com/edit/react-use-async-pool-demo?file=src%2FApp.tsx


使用

安装依赖

pnpm i react-use-async-pool

在 React 中使用

通过 ESM 方式导入

import React from "react";
import { useAsyncPool } from "react-use-async-pool";

const request = async (id: number) => {
  const result = await fetch(`https://picsum.photos/id/${id}/info`);
  const data = await result.json();
  return data;
};

const randomIdList = Array.from({ length: 20 }, () =>
  Math.floor(Math.random() * 50)
);

const Demo = () => {
  const { run, loading, data } = useAsyncPool({
    list: randomIdList, // 数组,参数列表
    fn: request, // 需要发起异步请求的函数
    limit: 2, // 限制并发的请求数位 2
  });

  return (
    <div>
      <div>
        {Array.isArray(data) &&
          data.map((item) => {
            return <div>{JSON.stringify(item)}</div>;
          })}
      </div>
      <div>
        <button disabled={loading} onClick={run}>
          {loading ? "加载中..." : "发起请求"}
        </button>
      </div>
    </div>
  );
};

export default Demo;

开发

你可以 Fork 此仓库进行开发

Fork 后可以安装依赖

pnpm i

启动本地开发环境

pnpm dev

打包文档

pnpm build-docs

打包为 ssr 静态站点

pnpm ssr-docs

打包库

pnpm build-lib

致谢

站点生成: vite-plugin-react-pages

Releases

No releases published

Packages

No packages published