task_race

task_race

task_race

功能

等待一组后台任务中最先完成的任务,并返回它的结果。task_race(tasks) 使用任务完成订阅唤醒,不通过 done()sleep() 轮询。

语法

参数

参数类型必填默认值说明
tasksArray<Task>要竞争完成结果的 Task 数组。

返回值

类型说明
任意值 / Empty返回最先完成任务的结果;空数组返回 empty

如果胜出的任务 throwtask_race() 会重新抛出;如果胜出的任务普通失败,则返回运行时错误。其他未完成任务会继续运行,不会被强制取消。

示例

注意事项

  • 参数必须是数组,数组元素必须全部是 Task。
  • 注册前已有任务完成时,按输入顺序返回第一个已完成任务。
  • 多个任务几乎同时完成时,按完成事件进入等待通道的顺序返回;同一轮已完成扫描按输入顺序打破平局。
  • 同一个 Task 在数组中出现多次时,按输入位置视为多个候选。
  • task_race() 会阻塞当前执行流;Web 请求热路径中应谨慎使用。