• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - NSOperation 等待依赖完成成功 block

[复制链接]
菜鸟教程小白 发表于 2022-12-13 01:09:07 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我在这个例子中使用了 AFNetworking,但我认为它与 NSOperation 更相关。我有两个操作,一个依赖于另一个整理。然而 op2 真的不应该在 op1 的成功 block 完全运行之前运行。在操作队列中存在依赖关系的情况下,op2 将在 op1 完成后立即运行,但在 op1 的成功 block 完成之前。

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSURLRequest *request = [manager.requestSerializer requestWithMethod"GET" URLString:url parameters: nil error: nil];
NSOperation *op1 = [http.manager HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation *operation, id userLocations) {
   NSLog(@"Success");
   // do some stuff 

   // more stuf

   // I am done, ready for the next operation.
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
   NSLog(@"Error: %@", error);
}];
NSOperation* op2 = // create op, this will depend on op1 finishing
[op2 addDependency:Op1];  // op2 is dependent on op1 finishing

[manager.operationQueue addOperations[op1, op2] waitUntilFinished:NO];

这对我来说不太适用,因为 op2 依赖于 op1 的成功 block 中设置的一些东西。这意味着 op2 在 op1 完成其成功 block 之前无法启动。

NSOperations 有没有办法让它们排队,这样每个 block 都可以等到 block 也完成运行?如果不是,我该如何重新设计来完成这种依赖关系。



Best Answer-推荐答案


我的结构会有所不同,在第一个操作中设置第二个操作。像这样:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSURLRequest *request = [manager.requestSerializer requestWithMethod"GET" URLString:url parameters: nil error: nil];
NSOperation *op1 = [manager HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation *operation, id userLocations) {
    NSLog(@"Success");
    // do some stuff

    // more stuf

    // I am done, ready for the next operation.
    // SO put the other operation here!
    NSOperation* op2 = // create op, this will depend on op1 finishing

    [manager.operationQueue addOperationp2];

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];
[manager.operationQueue addOperationp1];

关于ios - NSOperation 等待依赖完成成功 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25457550/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap