如何在没有AlamoFire的情况下在Swift 3中同时发出异步HTTP请求

爱德华多

我想进行网络爬网,目前我正在读取具有12000个url的txt文件,我想在此过程中使用并发性,但是请求不起作用。

typealias escHandler = ( URLResponse?, Data? ) -> Void

func getRequest(url : URL, _ handler : @escaping escHandler){

let session = URLSession(  
    configuration: .default,
     delegate: nil,
    delegateQueue: nil)

var request = URLRequest(url:url)

request.httpMethod = "GET"

let task = session.dataTask(with: request){ (data,response,error) in

        handler(response,data)    
}

task.resume()

}


    for sUrl in textFile.components(separatedBy: "\n"){
        let url  = URL(string: sUrl)!

        getRequest(url: url){ response,data in

            print("RESPONSE REACHED")

        }
    }
雅各布·博伊德

如果你有你的URLSessions正常工作,你需要去的就是创建独立的OperationQueue创建工作的每一个你想完成你的异步任务,将其添加到您的操作队列,并设置OperationQueue的maxConcurrentOperationCount来控制有多少你的任务都可以一次运行。Puesdo代码:

let operationQueue = OperationQueue()
operationQueue.qualityOfService = .utility

let exOperation = BlockOperation(block: {
    //Your URLSessions go here.
})
exOperation.completionBlock = {
    // A completionBlock if needed
}

operationQueue.addOperation(exOperation)
exOperation.start()

使用OperationQueue子类和Operation子类将为您提供用于处理多个线程的其他实用程序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在没有任何第三方库的情况下在Swift 3.0中使用Alamofire解析JSON

如何在没有通用用法的情况下在Swift 3.0中使用Set

Swift:如何在没有情节提要的情况下在Container View中更新数据

如何在没有HTTP请求的情况下在MVC Core应用中启动HostedService

如何在没有打字稿的情况下在Angular 2中注入Http

如何在没有页面终止的情况下在 PHP 中设置标头 HTTP 代码?

如何在没有Numpy函数的情况下在python中显示3 * 3矩阵

如何在没有异步/等待的情况下在循环中延迟解决承诺?

如何在没有 onPressed 的情况下在 Flutter 中进行异步函数调用?

如何在Swift 3中同时发出https请求

如何在没有for循环的情况下在python中对数组进行采样

如何在没有滚动条的情况下在 Tailwind 中创建可滚动元素

如何在没有管理员权限的情况下在Windows中安装DockerToolbox

如何在没有任何依赖库的情况下在 Visual Studio 中构建 dll?

如何在没有页面构建器的情况下在Kentico 12中使用BizForms

如何在没有鼠标的情况下在Ubuntu GUI中访问终端

如何在没有元素名称的情况下在 xpath 中显示文本

Moq:如何在没有占位符接口的情况下在F#中模拟函数?

如何在没有for循环的情况下在Matlab中获得某个输出?

如何在没有Grub Customizer的情况下在GRUB中设置默认内核?

如何在没有控制台的情况下在WebSphere中重置“父优先”?

如何在没有函数调用的情况下在 Linux 中检索处理器时间?

如何在Flutter中没有Scafflod的情况下在屏幕上获取简单文本?

如何在没有加号操作的情况下在GoLang中添加字符串?

如何在没有关联的UI元素的情况下在iOS中创建序列

如何在没有手动密码提示的情况下在centos中添加用户

SML:如何在没有附加参数的情况下在SML中模拟计数器

如何在没有x宏的情况下在C中获得类似反射的功能

如何在没有外部库的情况下在 React 中播放 <video></video>?