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

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

        NSLog(@"ok1"); 

}

NSLog(@"ok2");

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

有没有什么办法先ok1 再 ok2

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

5个回答

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

lx624909677
lx624909677 回复u012575301: 那你直接就改成同步的代码不就行了吗?
接近 5 年之前 回复
u012575301
哈哈哈嘿嘿嘻嘻 不是的 这只是一个例子,其实是以此为例而已,就想知道等待异步方法结束后再执行接着的代码的方法而已
接近 5 年之前 回复

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

u012575301
哈哈哈嘿嘿嘻嘻 不是的 这只是一个例子,其实是以此为例而已,就想知道等待异步方法结束后再执行接着的代码的方法而已
接近 5 年之前 回复

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

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

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐