【问题标题】:Async Operation vs Async Network task?异步操作与异步网络任务?
【发布时间】:2016-11-27 10:45:41
【问题描述】:

需要异步调用 RESTful Web 服务以获取 JSON 内容,然后解析该 JSON 响应以创建一些数据模型实体的常见场景。这个过程可以被取消/恢复。我不完全确定哪种方法最好:

  • 实现一个Operation 用于网络调用,另一个Operation 用于JSON 解析并设置两个操作之间的依赖关系(前者的JSON 输出是后者的数据输入)。然后,将这些操作添加到OperationQueue
  • 使用URLSessionURLSessionDataTask 执行网络调用,并在其回调中解析JSON。

或者也许是另一种更好的方法?

编辑: 在我的场景中,我不需要执行并发网络调用。如果我需要调用不同参数的服务,我应该能够在必要时停止之前的网络任务,然后启动新的。

【问题讨论】:

    标签: ios nsurlsession nsoperation nsoperationqueue nsurlsessiondatatask


    【解决方案1】:

    在大多数简单的情况下,答案只是一个 URLSession,但如果它很复杂,如您所见,那么 Operation 是一个有用的工具。 Advanced NSOperations 详细讨论了这个精确的用例。

    【讨论】:

    • 谢谢。我只需要执行那 2 个任务,网络调用 + JSON 响应解析,不需要并发。如果我需要一个新的网络呼叫,我只需要停止前一个呼叫(如果正在进行)并启动新的呼叫。那会使 URLSession 选项更合适吗?
    • 是的;您可以使用invalidateAndCancel() 取消现有会话。你只需要跟踪它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多