Swift-每秒一定数量的URL请求,无需计时器

时间:2019-01-19 13:58:46

标签: swift session url queue operation

如何在不使用计时器的情况下每秒发送3个请求?

    oq = OperationQueue.main
    oq.maxConcurrentOperationCount = 1
    oq.qualityOfService = .background
    oqSession = URLSession(configuration: .default, delegate: self, delegateQueue: oq)
    oqSession.dataTask(with: URL(...)!, completionHandler: { (data, response, error) in....

2 个答案:

答案 0 :(得分:0)

您可以按照以下步骤操作:

  1. 添加类型为lastRequest的变量Date
  2. 每次请求 ,都将变量设置为当前日期(通过执行lastRequest = Date())。
  3. 在可以提出请求之前,请将lastRequest与当前日期进行比较。如果差异大于1000(我认为是一秒),则可以执行步骤2。但是,如果差异小于1000,则可以知道最近的请求是在最后一秒内发出的。比执行其他逻辑。

答案 1 :(得分:0)

您好 Bogdan Bogdanov

尝试此代码,希望对您有所帮助。

    class viewcontorlelr: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        firstStatement()
    }

    func firstStatement() {
        DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(1), execute: {

            self.secondStatement()
        })
    }

    func secondStatement() {
        DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(1), execute: {

        // Type your statue
        })
    }

}