【问题标题】:AFNetworking and Batched/Serial OperationsAFNetworking 和批处理/串行操作
【发布时间】:2012-12-29 08:27:03
【问题描述】:

我正在尝试使用AFNetworking 进行一系列网络操作。例如:

[SomeApiICreated doNetworkingStuff success:^(NSString *message)
                           {
                             NSLog(@"Yay!");
                           }
                           failure:^(NSError *error)
                           {
                             NSLog(@"Oh noes!");
                           }];

现在在 doNetworkingStuff 中,我想做多个网络任务。例如

  1. 获取应用令牌
  2. if (appTokenGot) step3 else callFailure
  3. 使用应用令牌获取内容列表
  4. if (listGot) step5 else callFailure

但我还想打电话给doNetworkingStuff2,它只执行第 3 步及以上步骤,基本上让我在需要时将操作排队,混合和匹配它们等。但所有这些都是我的一个主要调用可以说“是的,这行得通”或“有问题”

NSOperationQueue 是正确的,还是“如果这样,那么这样”的嵌套函数阻止了最好的方法?

任何示例也会有所帮助。

【问题讨论】:

    标签: ios networking process afnetworking


    【解决方案1】:

    为什么不直接调用其他函数从成功/失败块中传递数据。例如,我在 App.net API 中使用了类似的东西。

    [[KSADNAPIClient sharedAPI] postPath:@"stream/0/posts"
                                  parameters:params
                                     success:^(AFHTTPRequestOperation *operation, id responseObject)
         {
             [[KSPostsController sharedController] addPosts:responseObject];
         }
                                     failure:^(AFHTTPRequestOperation *operation, NSError *error)
         {
             if (block) {
                 block([NSArray array], error);
             }
         }];
    

    这样我就不会在成功和失败块中堆积大量逻辑。

    【讨论】:

      【解决方案2】:

      AFAIK,最好的方法是使用完成回调来执行连续调用。请记住,您需要响应对象来执行后续步骤,因此您将在成功回调中接收此对象。

      【讨论】:

        猜你喜欢
        • 2011-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-17
        相关资源
        最近更新 更多