iOS 关于 使用 dispatch_group 进行多次网络请求

应用场景

论坛模块需要提供上传多张图片的功能,基本逻辑是,用户在相册中选择多张图片之后,一张张的上传,这个地方是上传到资源服务器中,所以会返回给客户端一个图片在资源服务器中的地址,那么需要记录的就是每一张图片的地址.由于是异步执行的上传图片,所以要在全部图片都上传成功后,获取到所有的图片地址.这种情况我觉得使用 dispatc_group 应该非常方便,但是问题出现了,

        // 创建 dispatch_group_t 队列
    dispatch_group_t group = dispatch_group_create();
    // 执行第一个下载任务
    dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
        // 下载完毕...
    });
    // 执行第二个下载任务
    dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
        // 下载完毕...
    });

    ... 

    dispatch_group_notify(group, dispatch_get_global_queue(0, 0), ^{
        // 获取所有下载任务的结果
    });

但是其实运行结果并没有变化,我认为 原因是在 每一个 dispatch_group_async 的 Block 中运行的是一个一步的下载代码,这样的话,其实是 group 又包裹了一层异步线程,我在最后获取到的之后,下载代码执行结束,但是下载的线程并没有获取到,不知道哪位大神帮帮忙,帮忙改下. 其实这个问题我觉得简化一下就是,把普通的 AF 下载放到 group 中,但是我不会

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
iOS 关于 使用 dispatch_group 进行多次网络请求
# 应用场景n论坛模块需要提供上传多张图片的功能,基本逻辑是,用户在相册中选择多张图片之后,一张张的上传,这个地方是上传到资源服务器中,所以会返回给客户端一个图片在资源服务器中的地址,那么需要记录的就是每一张图片的地址.由于是异步执行的上传图片,所以要在全部图片都上传成功后,获取到所有的图片地址.这种情况我觉得使用 dispatc\_group 应该非常方便,但是问题出现了, nnn```n // 创建 dispatch_group_t 队列n dispatch_group_t group = dispatch_group_create();n // 执行第一个下载任务n dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^n // 下载完毕...n );n // 执行第二个下载任务n dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^n // 下载完毕...n );nn ... nn dispatch_group_notify(group, dispatch_get_global_queue(0, 0), ^n // 获取所有下载任务的结果n );n```n但是其实运行结果并没有变化,我认为 原因是在 每一个 dispatch\_group\_async 的 Block 中运行的是一个一步的下载代码,这样的话,其实是 group 又包裹了一层异步线程,我在最后获取到的之后,下载代码执行结束,但是下载的线程并没有获取到,不知道哪位大神帮帮忙,帮忙改下. 其实这个问题我觉得简化一下就是,把普通的 AF 下载放到 group 中,但是我不会n
dispatch_group实践,AFN3.0多个网络请求
在实际开发过程中经常会有在一个页面有多个网络请求,页面UI需要在所有网络请求全部回来的情况下更新。先简单看一个具体的问题: 页面有三个网络请求a、b、c。三个网络请求都成功的情况下刷新UI,有一个失败就认为请求失败,不进行UI刷新。
IOS开发指南学习——使用MKNetworkKit进行网络请求
通过之前的学习,我大概也知道了在ios开发中框架是一种多么神奇且便利的存在。 同样,在进行网络请求时也有十分简单易用的网络请求框架可以使用,其中MKNetworkKit就是一个优秀的轻量级网络请求框架。 使用过程比较简单,具体根据以下方法配制: 1.从https://github.com/MugunthKumar/MKNetworkKit下载并解压MKNetworkKit框架。 2.将MK
iOS中使用block进行网络请求回调
转自: http://www.tuicool.com/articles/JFRfmq // // HttpRequest.h // UseBlockCallBack // // Created by Michael on 2/13/14. // Copyright (c) 2014 EIMS. All rights reserved. // #import ...
dispatch_group
两种方式都是模拟任务block内为异步操作的情况,方式一先执行的dispatch_group_notify里的代码,后执行的dispatch_group_async里的任务代码,这与我们的初衷相违背。如果任务block内为同步操作时,则无论哪种方式都不会出现这种状况。这也是dispatch_group的一个坑人的地方。我们在使用dispatch_group时一般都是想异步执行任务,所以,一定要注意这个坑
使用fetch进行网络请求
移动端网络的高速发展,越来越多的企业与公司开始将业务的重点放在移动客户端上。Android与iOS两大平台也基本垄断了整个移动端操作系统。市场对移动端开发人才的需求越来越大,培养高素质的移动端编程人才的需求也将越来越迫切。该课程主要分为六大章节,分别是JavaScript语言基础入门、ECMAScript基础入门、ReactiveNative组件进阶、ReactNative技能进阶、21个具体的案例实战。
使用URLSesstion进行网络请求
Swift作为一门新兴的编程语言,其集合了许多现代编程语言的优势,由于其开源的特性,其应用领域也将越来越广泛。本书从零开始,介绍语言的运行环境,基本语法,用法并以iOS实战应用的方式带领读者对Swift语言从入门到精通。
使用Http进行网络请求
package com.example.asynctask; import java.io.InputStream; import java.net.URL; /**  * Created by HP on 2017/11/29.  */ public class HttpURLConnection {     public static InputStrea
使用volley进行网络请求
//Volley 缓存StringRequest,JsonObjectRequest两级缓存(网络--->磁盘) //ImageLoader(三级缓存 网络--->内存缓存---->磁盘) //从缓存中获取数据(缓存失效时间失效)--->hit获取直接展示数据 //没有获取数据,走网络,响应头,判断是否进行缓存 //首先展示的是volley的工具类 封装到一个类中统一使用  packag
使用XMLHttpRequest进行网络请求
移动端网络的高速发展,越来越多的企业与公司开始将业务的重点放在移动客户端上。Android与iOS两大平台也基本垄断了整个移动端操作系统。市场对移动端开发人才的需求越来越大,培养高素质的移动端编程人才的需求也将越来越迫切。该课程主要分为六大章节,分别是JavaScript语言基础入门、ECMAScript基础入门、ReactiveNative组件进阶、ReactNative技能进阶、21个具体的案例实战。
使用Httpclient进行网络请求
使用Httpclient进行网络请求 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.2</version> &lt
dispatch_group项目中使用
需求很简单,用AFN多个请求同时进行,所有请求完成后处理数据源,直接上代码,(JJNetworkTool封装的AFN网络请求工具) dispatch_group_enter(group);和 dispatch_group_leave(group);要配对使用 所有请求完成后通知 dispatch_group_notify #pragma mark - 多个请求 - (void)
网络请求 多次请求
发送网络请求,一次请求不到数据执行多次请求时,之前用过Timer和TimerTask,感觉有点麻烦,后来发现使用代码块更加方便高效。 比如请求第一次请求没有成功再次请求比如最多执行8次,可以使用代码块来操作。直接上代码,代码如下: int index = 0; w: while (true) {
iOS 使用JSPatch写网络请求.
使用JSPatch补丁, 在一个方法中添加网络数据请求.如何来写?ndefineClass("ChooseRouteVC",n AppVersionChecking:function(string)n n var infoDictionary = NSDictionary.dictionary;n infoDictionary = NSBundle.mainBundle.infoDictionary;n var appCurVersion = NSString.string;n appCurVersion = infoDictionary.setObject_forKey('CFBundleShortVersionString');n var userDefaults = NSUserDefaults.standardUserDefaults;n userDefaults.setValue_forKey(appCurVersion, 'check');n n var buildStr = NSString.string;n buildStr = NSBundle.mainBundle.infoDictionary.setObject_forKey('CFBundleVersion');nn var buildFl = buildStr.intValue;n var manager = AFHTTPRequestOperationManager.manager;n n // 网络请求n n)
网络请求ios
iOS AFNetworking 请求返回400,如何打印后台返回信息 5C afnetworking网络请求ios比如 我在某次请求的时候某个 参数忘记 带了。后台返回400 直接答应error就是bad Request ,而后台实际可能返回有提示信息,某个参数缺少等。可以直接方便调试。我该怎么在返回的task中打印后台返回的东西了同问0 |浏览3...
iOS 网络请求
iOS网络编程 计算机网络 HTTP-(超文本协议) Https-(安全的超文本协议)  --- 如今用的就是这种方式,网络请求的时候需要配置网络安全 将以下代码插入进去 NSAppTransportSecurity     NSAllowsArbitraryLoads Http常见的两种请求方式: POST : 1 地址栏中不会有表
IOS网络请求
1.访问网页 2.从网上加载图片资源到本地 3.发送get请求获取到天气预报的接口,然后保存到本地接着是json解析 博客参考:http://blog.csdn.net/dingxiaowei2013/article/details/10417187
一个界面发多次网络请求(GCD使用)
- (void)test {          /*            先判断两个请求是否有依赖性,有的话就很简单了,在第一个请求回调后发送第二个请求。            如果两个请求没有依赖,但UI需要在两个请求完成后才能刷新,加个判断,如果两个请求完成就刷新。            如果都请求没有依赖性,界面也是分两部分展示请求下来
dispatch_group嵌套异步函数的正确使用
举个栗子:异步请求A图片和B图片和C图片,在最后合成ABC图 -(void)group{ dispatch_group_t group = dispatch_group_create(); dispatch_group_async(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),...
使用vue-resource来进行网络请求
本篇文章主要讲解如何用vue-resource来进行简单的网络请求,vue中vue-resource类似ajax的网络请求功能。 ①安装vue-resource依赖 在使用vue-resource之前,我们需要进行依赖的安装,在项目根目录的命令行中,输入 npm install --save vue-resource ②在main.js中引入 在引入基本的vue之后,我们需要在在main.js...
安卓使用OkHttpClient进行网络请求
一般的安卓开发中,我们进行网络请求使用的都是HttpUrlClient。但使用起来有点繁琐。可以通过OkHttpClient减少代码量,源码为https://github.com/square/okhttpOkHttpClient的使用非常简单,也可以分为同步和异步两种。同步(Synchronous Get)首先引入Okhttpclient的依赖包compile 'com.squareup.okht
swift4--使用URLSession进行网络请求
这里写了怎么拿到json数据 不知道怎么解析的小伙伴可以看我另一篇贴子 《 swift4--解析json》   GET请求: // // ViewController.swift // URLSesstionTest // import UIKit class ViewController: UIViewController { // 要传递的参数 var...
swift 使用AFNetWorking 进行网络请求
1.  pod 'AFNetworking', '~> 3.1.0' 2. 创建网络请求工具 继承于NSObject import AFNetworking enum FMResult {     case FMData     case FMJSON     case FMXML } enum FMRequestStyle {
傻瓜式使用Retrofit+RxJava进行网络请求
网上已经有很多很优秀的Retrofit教程了,但是再怎么也是别人的。要想自己在需要的时候,可以傻瓜式找出来按着上面的来抄就可以了的文章,恐怕必须要自己写一个了。开始:(1)既然是网络框架,那么首先就要添加网络权限<uses-permission android:name="android.permission.INTERNET" />(2)添加依赖compile 'com.square...
android使用okhttp进行网络请求
android使用okhttp进行网络请求,终于解决了项目的问题,感觉心情非常的高兴,特此纪念
使用httputils进行网络请求上拉加载
public class FragmentOne extends Fragment implements IXListViewListener {     private XListView xlv;     private int index;     private String path;     private List list = new ArrayList();     p
Android使用Retrofit进行网络请求
Retrofit 简介 用于Android和Java平台的一款类型安全的HTTP客户端,通过一个Java接口实现HTTP请求对象,如下: public interface Github { @GET("/repos/{owner}/{repo}/contributors") Call<List<Contributor>> contributors( ...
iOS在进行网络请求的时候的网络状态的响应的判断
iOS在进行网络请求的时候的网络状态的响应的判断
iOS利用ICE进行网络请求Demo
iOS客户端接入ice进行网络请求,本Demo对如何配置工程,如何利用代理回调ice接口提供解决方案
进行网络请求
<span style="color:#424242;">本课程是一套小程序开发的入门级视频教程,也是一本着重于动手实战的编程指导教程。随着这两年小程序开发的日渐火热,无论是对于编程工作者、编程讲师或是编程爱好者与学生,掌握小程序开发技能都将为自己带来极大的收获。本书分3个部分进行小程序开发的全面讲解,第1部分着重于语法与小程序开发基础。第2部分是进阶部分,着重于小程序开发中的重难点进行讲解。第3部分为实战部分,通过两个完整的实战项目帮助读者综合运行学习到的知识进行实战项目开发,锻炼读者的动手能力与运用能力。</span>
requests进行网络请求与urllib2进行网络请求进行比较
同一台计算机,同一个环境下,获取LOL贴吧前二十页内容,urllib2用时18.8280000687,而采用requests进行网络请求耗14.8680000305。综上来讲,选用第三方的requests进行网络请求效率比较高。但是,依然不够好,如果我们采用,多线程的方法,又可以将时间成倍的降低,也就是说如果你是两核处理器时间可以在requests的基础之上除以2,如果是四核的,就可以在reques
多线程并发控制dispatch_group
1、在开发中经常遇到调用多个接口请求数据完成后,再根据不同接口返回的数据调用另外的方法处理请求数据的情况。当然这种可以使用同步请求数据,然后做处理。这样就会按照程序先后执行。但是往往这种方式效率低下,会阻塞线程。为了解决问题通常会引入dispatch_group并发处理。 dispatch_group_t group = dispatch_group_create(); // 某个任务
最简单的iOS网络请求
做的iOS开发,说到网络请求,大家可能都不约而同的提到AFN,可以说大家的网络请求都是用AFN封装而成,AFN的强大易用的确很好。 但是版本升级就会出现一些问题,所以就自己基于iOS的原生封装了一个网络请求的静态库,让你一行代码实现网络请求。   基于原生的iOS的封装的GET和POST网络请求,一行代码即可实现,基于原生封装,使用简单方便。 使用方法: 1.下载该静态库并导入 htt...
iOS网络请求浅谈
http请求: 1 请求行:http请求方法、请求URI、http版本 2 请求头:他向服务器提供额外的元数据,这些元数据可以描述客户端、进一步描述请求或是从服务器请求莫种类型的响应。每个请求可以提供一个或多个头。Host头是http1.1请求中唯一必须提供的头。它提供了客户端指定的原始主机名。 3 请求体:请求体可以是任意的字节序列,通过一个空行与头分隔开来。请求体必须遵循客户端与服务器之
iOS开发之--iOS网络请求错误码。
今天无聊刷脉脉,可是发现怎么刷都出现错误-1003,后来改为wifi网络下,变成错误-1001,上网查找了一番发现分别为找不到host和请求超时。 官方链接为:https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Constants/Re
iOS 网络请求劫持
1、概述: NSURLProtocol是URL loading system 中的一个重要的组成部分,它允许我们对全局的网络请求(基于使用URLRequest)做拦截,可拦截的请求类型有NSURLConnection、NSURLSession 和 UIWebView中的请求。对于WKWebView的请求,它是无能为力的。 成功拦截网络请求后,有且不局限于如下: 忽略网络请求,直接返回自定义的
iOS 网络请求及数据解析
iOS 网络请求,数据解析
iOS——封装网络请求
在开发过程中,很多模块都要去请求网络数据,如果每遇到一次都要去编写请求网络的方法,为了方便,封装网络请求 .h文件//写一个枚举标示请求类型 typedef NS_ENUM(NSInteger,RequstType){ GET, POST };//定义两个block,把block当做参数 typedef void(^Success)(NSData *data); typedef v
iOS——GET POST 网络请求
1.HTTP协议,Hyper Text Transfer Protocol(超⽂文本传输协议)是 ⽤用于从万维⺴⽹网服务器传送超⽂文本到本地浏览器的传输协议,HTTP是 ⼀一个应⽤用层协议,由请求和响应构成,是⼀一个标准的客户端服务器模型。2.BS和CS的区别以及优缺点 : 1)C/S又称Client/Server或客户/服务器模式。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系
iOS网络编程-URLSession
iOS网络请求 本文讲解了用iOS原生套类URLSession实现网络请求的方式方法。 本文阅读大概需要10分钟左右 HTTP协议 网络数据通信需要遵守数据传输协议,几乎所有的客户端服务器网络通信都是基于HTTP协议的。关于HTTP协议妹子就不废话了,网上没有10000也有5000篇这种文章的介绍,这里推荐一篇速览文章,短小易懂快速理解HTTP协议。 URLSession 做iOS开发的肯定都...
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池