在Swift Concurrency的异步编程中,我们逐渐发现,大体上有如下三种情形
- Task: 一般情况下耗时较短的异步回调,例如一个查询请求
- Job: 一般情况下耗时较长的异步回调,例如一个打包下载离线地图的任务
- Stream: 没有确定结束时间的“状态流”,如地理围栏触发的状态更新的通知
在考虑异步API设计的过程中,需要分门别类将其归为这几种异步情形之一。有一些帮助我们分类的问题:
- 这件任务在回调前,常见需要运行多少时间?(一百毫秒、一秒、一分钟)
- 作为用户使用这个API时,是否会希望其附带一个“进度条”?
- 回调时常见的数据量大小是多少?
- 是否有办法暂停、继续该任务?
- 任务开始后,是否只能取消或等待其完成?
- 是否存在超时错误?
以及一些帮助我们联想的例子:
- 文件上传、下载
- 图像渲染、视频处理
- 服务器数据库请求
- 批量文件处理
- 科学计算、模型训练
- GPS位置更新、股票价格更新
- 支付请求超时
Top comments (0)