# limitAsync

创建一个新函数，限制异步函数的最大并发执行数。

```typescript
const limitedFunc = limitAsync(asyncFunc, concurrency);
```

## 参考

### `limitAsync(callback, concurrency)`

当您想限制多次调用的异步函数的并发执行数时，使用 `limitAsync`。只有指定数量的执行会并发运行，额外的调用会等待正在运行的操作完成。

```typescript
import { limitAsync } from 'es-toolkit/array';

// 限制最多 3 个并发请求。
const limitedFetch = limitAsync(async url => {
  return await fetch(url);
}, 3);

const urls = ['url1', 'url2', 'url3', 'url4', 'url5'];
await Promise.all(urls.map(url => limitedFetch(url)));
// 前 3 个首先执行，然后在它们完成时执行其余的。
```

它对控制资源密集型操作（如外部 API 调用或数据库查询）的负载很有用。当使用有速率限制的 API 或管理服务器负载时特别有效。

```typescript
import { limitAsync } from 'es-toolkit/array';

// 一次最多处理 2 个重计算。
const processItem = async item => {
  return await heavyComputation(item);
};

const limitedProcess = limitAsync(processItem, 2);
const items = [1, 2, 3, 4, 5];
await Promise.all(items.map(item => limitedProcess(item)));
// 最多同时处理 2 个项目。
```

#### 参数

- `callback` (`F extends (...args: any[]) => Promise<any>`)：要限制并发执行的异步函数。
- `concurrency` (`number`)：最大并发操作数。

#### 返回值

(`F`)：一个应用了并发限制的新函数。它与原始函数具有相同的接口。
