【问题标题】:Dispatch Group wait till Timeout调度组等待超时
【发布时间】:2021-10-10 05:36:33
【问题描述】:

我使用以下函数从 api 获取数据,但是我正在努力做的是在设置的时间用完时使函数超时。

我的目标:

-我希望下面的代码等待一段时间,例如10 秒,如果 10 秒过去了,我希望它继续执行其他功能并工作,即不要继续等待。为此,我正在使用 dispatchgroup 等待方法。但是它没有按预期工作。如何调整以下内容以实现这一目标?


class ViewController: UIViewController {

    var myArr = [testing]()
    let dispatchGROUP=DispatchGroup() 
. . .}
    @objc func warmUp(url: String, u: String, p: String){
    

        let waitResult = dispatchGROUP.wait(timeout: .now() + 10)

        AF.request(url, method: .get)
            .authenticate(username: u, password: p)
            .response { [weak self] response in

                guard let safeData = response.data else {self?.sArr.append("0")/*; self?.warm.leave()*/; print("0 sent"); print(url,u,p); return}
                let xml = XML.parse(safeData)
                let sid = xml.Response.SID.text ?? ""
                print(sid)
                self?.sArr.append(sid)
//                self?.dispatchGROUP.leave()
                if waitResult == .success{
                    print("success")
                    self?.dispatchGROUP.leave()
                }else if waitResult == .timedOut{
                    print("fail")
                    self?.dispatchGROUP.leave()
                    return
                }
            }
    }

【问题讨论】:

  • 您为什么要使用 Disptach Group?
  • 另外,一个叫“dispatchGROUP”的家伙是哪里来的?
  • @Larme 帮忙了,谢谢
  • @Rob yes timeoutinterval 工作并实现了我想要的,谢谢

标签: ios swift grand-central-dispatch


【解决方案1】:

stackoverflow.com/a/61192412/1801544 请设置超时间隔,我相信这是你想要的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    • 2012-09-20
    • 1970-01-01
    • 2015-02-02
    • 1970-01-01
    相关资源
    最近更新 更多