task_all
task_all
功能
等待一组后台任务全部完成,并按输入顺序返回每个任务的成功结果。task_all(tasks) 是同步组合等待函数,不会取消未完成任务。
语法
values = task_all(tasks)
参数
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| tasks | Array<Task> | 是 | 无 | 要等待的 Task 数组。 |
返回值
| 类型 | 说明 |
|---|---|
| Array | 全部任务成功时,按输入顺序返回结果数组;空数组返回 []。 |
如果任一任务 throw 或普通失败,task_all() 会等待输入中的任务全部完成,然后按输入顺序选择第一个非成功结果:throw 会重新抛出,普通失败会返回运行时错误。
示例
t1 = task(fn() { return 1 }) t2 = task(fn() { return 2 }) values = task_all([t1, t2]) // 输出:[1,2] print json(values)
slow = task(fn() { sleep(100) return 'slow' }) fast = task(fn() { return 'fast' }) values = task_all([slow, fast]) // 输出:["slow","fast"] print json(values)
注意事项
- 参数必须是数组,数组元素必须全部是 Task。
-
task_all([])返回空数组[]。 - 任务在创建时已经并发执行,
task_all()按输入顺序等待结果不会把任务执行变成串行。 -
task_all()会阻塞当前执行流;Web 请求热路径中应谨慎使用。 - 其他任务失败时不会强制取消仍在运行的任务。