美文网首页
Swift 网络请求的异步线程实现同步操作

Swift 网络请求的异步线程实现同步操作

作者: 兜里没糖 | 来源:发表于2020-02-25 17:41 被阅读0次

信号量:创建一个信号量,value为0;信号量的等待方法是等待信号量不为0的时候执行之后的程序,当接收到网络请求的响应后,发送信号量,打破等待;

异步组:使用异步组(dispatch group)可以实现在同一个组内的内务执行全部完毕之后再执行最后的处理。但是同一组内的异步任务的执行顺序是不可控的。

实现多个网络请求同步执行

使用串行队列和信号量机制使异步线程完成同步操作

image.png

或者:


image.png

实现多个网络请求执行完后刷新UI

①、用信号量和异步组实现异步线程同步执行

1、使用dispatch_group_notify监听队列的执行结果;
2、在队列的异步执行中使用信号量(dispatch_semaphore)来控制网络接口的请求为同步执行;
3、当刷新UI的时候一定要在主线程操作;

image.png

结果:


image.png

②、用异步组实现异步线程同步执行

1、使用dispatch_group_notify监听队列的执行结果;
2、使用异步组的enter和leave方法控制网络接口的请求为同步执行;
3、当刷新UI的时候一定要在主线程操作;

image.png

结果:


image.png

相关文章

  • Swift 网络请求的异步线程实现同步操作

    信号量:创建一个信号量,value为0;信号量的等待方法是等待信号量不为0的时候执行之后的程序,当接收到网络请求的...

  • iOS-多线程中的信号量

    网络请求的任务是提交给子线程异步处理了,对于主线程网络请求这样的任务也就快速执行完毕了,但是对于主线程网络请求是一...

  • Python3.x 分线程异步请求

    重写线程(threading) 实例1:分线程异步请求数据 使用 multiprocessing的Pool实现 P...

  • IntentService

    继承自Service,处理异步请求,实现多线程。 使用步骤: 定义 IntentService的子类传入线程名称、...

  • gcd

    GCD 异步请求,我只认准 GCD | GCD异步,你值得拥有 (广告先走一波) 网络请求放在子线程,UI 只能在...

  • 基于Spring框架实现异步请求与异步调用

    一、异步请求 1.1 同步请求与异步请求 首先看一下同步请求的线程执行模型: 接着看一下异步请求的线程执行模型: ...

  • 理解Promise, async, await

    关于异步 JavaScript脚本执行是“单线程”(脚本解释引擎是单线程的),但会GUI线程,网络请求线程等JS引...

  • Android开源库项目及库汇总——补充篇

    网络相关 ion– 一个异步网络请求和图片加载的库,一个库能搞定几乎所有的网络请求。 多线程下载– Android...

  • swift - 获取网络视频截图

    注意:添加AVFountion.Framework 网络请求比较耗时,所以要写在异步线程里。 CMTimeMake...

  • Ajax简述

    标准请求响应时浏览器的动作(同步操作)1.1 浏览器请求什么资源,跟随显示什么资源 ajax:异步请求.2.1 局...

网友评论

      本文标题:Swift 网络请求的异步线程实现同步操作

      本文链接:https://www.haomeiwen.com/subject/dhwxchtx.html