宜搭+
    正在准备搜索索引...

    类 Tasks

    用于并发执行多个异步任务并聚合结果的任务管理器。

    Tasks.of 支持控制并发数、进度回调、任务超时以及带退避的无限重试机制。 当某个任务失败时会按指数退避进行重试,直至成功或达到最大重试次数。

    26.4.13

    const tasks = [
    () => fetch("/api/a").then(r => r.json()),
    () => fetch("/api/b").then(r => r.json()),
    ]
    const results = await Tasks.of(tasks, (total, finished) => {
    console.log(`${finished}/${total}`)
    }, { concurrency: 2, timeout: 5000, maxRetries: 3 })
    索引

    构造函数

    方法

    构造函数

    方法

    • 并发执行一组异步任务,并返回按原始顺序排列的结果数组。

      任务数量为空或传入非数组时,立即返回空数组。方法内部会创建若干工作协程, 每个协程从任务队列中依次取任务执行。失败的任务会根据 retryDelaymaxRetryDelay 进行指数退避重试,直到成功或超过 maxRetries

      类型参数

      • T

        任务返回值的类型。

      参数

      • tasks: (() => Promise<T>)[]

        需要执行的任务数组,每个任务为返回 Promise<T> 的函数。

      • 可选onProgress: (total: number, finished: number) => void

        可选的进度回调,参数为任务总数与已完成任务数。

      • 可选options: {
            concurrency?: number;
            maxRetries?: number;
            maxRetryDelay?: number;
            retryDelay?: number;
            timeout?: number;
        }

        可选的执行配置,包含并发数、重试延迟、最大重试延迟、 超时时间与最大重试次数。

      返回 Promise<T[]>

      所有任务成功后的结果数组,顺序与输入任务一致。

      当任务失败次数超过 maxRetries 时,抛出 "max retries exceeded"

      当任务在 timeout 时间内未完成时,抛出 "timeout"

      26.4.13