从 `URLSession.dataTaskPublisher` 接收任务进度

Receive task progress from `URLSession.dataTaskPublisher`

通过实施 URLSessionDataDelegate.urlSession(_:dataTask:didReceive:) 委托方法并使用委托风格的“任务,task.resume()”调用风格,可以接收有关 URLSessionTask 的进度更新.

使用 API 的 Combine 风格,这似乎是不可能的。使用 URLSession.dataTaskPublisher(for:) returns 发布者在完成后发布 (Data, URLResponse) 元组,但从不调用委托方法。这样,它与 URLSession.dataTask(with:completionHandler:) 方法非常相似,后者使用最终结果调用 completionHandler,而不是进程中的 Progress 报告。

我是否缺少任何 API 或模式来允许进度报告,或者 URLSession 任务处理的 Combine 风格不提供检索进度的方法?

不,你没有遗漏任何东西。要检索进度信息,您需要构建自己的 Future 而不是使用内置数据任务发布者。