循环请求数据时,返回的结果没有按照顺序显示的解决方法

来源:互联网 发布:铲形门齿 知乎 编辑:程序博客网 时间:2024/06/16 08:42

//开启线程,设置最大并发数为1

dispatch_queue_t conCurrentQueue = dispatch_queue_create("test", NULL);

        NSOperationQueue *queue = [[NSOperationQueue alloc] init];

        queue.maxConcurrentOperationCount = 1; //列表缓存最大并发数

        

//开始循环

        for (NSDictionary *dic in oneCategoryArr) {

            

            dispatch_barrier_async(conCurrentQueue, ^{

                

                [queue addOperationWithBlock:^{

                    queue.suspended = YES; //队列暂停

                    

                    //这里写网络请求

                   

queue.suspended = NO;//队列开始

                }];

                

                

            });

           

  

        }

dispatch_barrier_async函数的官方翻译:

调用这个函数总是在barrier block被提交之后立即返回,不会等到block被执行。当barrier block到并发队列的最前端,他不会立即执行。相反,队列会等到所有当前正在执行的blocks结束执行。到这时,barrier才开始自己执行。所有在barrier block之后提交的blocks会等到barrier block结束之后才执行。

注意:dispatch_barrier_async函数需要同dispatch_queue_create函数生成的concurrent Dispatch Queue队列一起使用

阅读全文
0 0
原创粉丝点击