有没有办法配置 Alamofire 不将结果分派到主队列?
Posted
技术标签:
【中文标题】有没有办法配置 Alamofire 不将结果分派到主队列?【英文标题】:Is there a way to configure Alamofire to not dispatch results to the main queue? 【发布时间】:2021-07-14 18:59:46 【问题描述】:我正在构建一个 ios 应用程序框架,该框架已经对效果的输出(例如网络调用)应该如何分派回主队列有意见。
Ergo,使用我的应用程序框架和 Alamofire 库存配置,我相信 Alamofire 正在将我的结果分派到主队列,然后我的应用程序框架正在将结果重新分派到主队列。这不是一个停止展示的问题,但它是一个小的性能损失,我不需要支付,如果我可以配置 Alamofire 不执行最终调度回主队列。 p>
基本上,我想将 Alamofire 配置为像普通 URLSession 一样,调用者负责将其调度回主队列。
我已经阅读了 Alamofire 文档,其中描述了您可以传递给 Alamofire 会话以配置 Alamofire 管道的不同部分发生的位置的少数队列,但我不太清楚是否有可以设置的配置有效地选择退出响应处理程序的最后一次分派。
感谢您的任何想法。
【问题讨论】:
【参考方案1】:Alamofire 的所有分派到主队列的功能都可以采用特定的队列,但您不能同时为所有这些功能设置默认值。例如,如果您希望在特定队列上调用响应处理程序,则将该队列传递给响应处理程序:responseDecodable(queue: someQueue)
。否则,Alamofire 的所有内部事件都发生在一组特定的队列上,例如 Session
的 rootQueue
,您也可以将其用于其他功能。
【讨论】:
嗨,乔恩,感谢您的回答。跟进一下,因为我的应用程序框架必须稍后重新发送,所以我在 Alamofire 中寻找的是.responseDecodable(queue: someAliasForCurrentQueueOfTaskSoNoDispatchHappensAtAll)
。听起来我可以创建一个自定义队列并将其交给 Alamofire 管道的每个部分,但是在 Alamofire 中,调度调用 将会发生,即使所有调用都是“从 customQueue1 调度到 customQueue1 ",即调度调用本身的成本是不可避免的。对吗?
这取决于 Dispatch 本身。它可能能够优化这种情况,因为不需要排队跳跃,它只会将工作排入队列。无论如何,将工作排入队列是轻量级的,因此无需担心。以上是关于有没有办法配置 Alamofire 不将结果分派到主队列?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法在不将完整文件加载到内存的情况下将 tiff 图像转换为 Base64
有没有办法在不将 dtype 更改为对象的情况下将 NaT 附加到带有时区的 pandas 日期时间?
有没有办法在不将应用上传到 Play 管理中心的情况下使用真实的 unitID 测试 adMob 广告?
有没有办法让 <button> 元素链接到一个位置而不将其包装在 <a href ... 标签中?