哈哈哈嘿嘿嘻嘻
2015-11-06 07:50
采纳率: 4.3%
浏览 1.5k

ios 想问一个很简单的异步问题

[manager POST:@"https://www.baidu.com" parameters:@{} success:^(AFHTTPRequestOperation *operation, id responseObject) {

        NSLog(@"ok1"); 

}

NSLog(@"ok2");

很明显这段代码 如果打印的话 肯定是:先ok2 再ok1

有没有什么办法先ok1 再 ok2

当然不能把 NSLog(@"ok2");这句放到异步代码块之后的情况下 达到上述要求

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • lx624909677 2015-11-06 08:36

    异步的本身就是在需要做等待的地方不等待继续执行后面的事情,想要等待post完成再走下面的那就用同步来做啊,为什么要用异步的方式来完成同步做的事情呢?

    评论
    解决 无用
    打赏 举报
  • 九块腹肌的雷先生 2015-11-06 14:07

    首先你问这个问题就已经违背了多线程设计的思想,使用AFNetworking来异步加载数据就是为了,防止主线程卡顿,而你要达到那种效果,就必须等数据
    加载完成了返回,加载数据耗时间,导致UI卡顿。可以从你的代码看出来,你可能是烦于每次请求数据都要写AFN这么一大串的方法,你想在AFNetwork上在进行二次封装,!所以达到你的那种效果不难,只是没有实际意义了。

    评论
    解决 无用
    打赏 举报
  • zhz459880251 2015-11-06 14:50
    评论
    解决 无用
    打赏 举报
  • joce1en 2015-11-09 11:53

    [manager POST:@"https://www.baidu.com" parameters:@{} success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"ok1");
    //回调主线程
    [[NSOperationQueue mainQueue] addOperationWithBlock:^{
    NSLog(@"ok2");

    }];
    }
    我懂题主的意思 就是在次线程中完成任务之后,又继续回到主线程执行任务 可以在次线程中添加一个返回到主线程的方法就 ok 啦
    希望能帮到你

    评论
    解决 无用
    打赏 举报
  • md90223 2015-11-13 03:33

    简单点 . 在NSLog(@"ok2") 之前加个判定 if() ...

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题