完成处理程序是否结束该功能?

问题描述 投票:0回答:1

也许我不了解完成处理程序的概念,但是我有类似的功能;

func someFunction(completion: @escaping (Bool, LoginError?) -> Void) {
    self.checkDevice() { allowed, error in
       if let e = error {
          completion(false, e)
       }
        completion(true, nil)
    }
}

尽管了解checkDevice()的功能,但基本前提是它执行异步网络调用,并返回无错误的true(无错误)或返回有错误的false

当我运行此代码时,我发现完成处理程序被调用了两次。它以元组(作为false, error)和(true, nil)发送补全。我已经进行了一些调试,似乎没有办法两次调用someFunction()

我相信一旦发送completion,该函数就会结束。在我的测试用例中,我强制执行checkDevice()中的错误,这将导致我以(false, error)发送完成,但同时看到了[false, error)和(true, nil)。完成是否不会立即结束功能?

swift completionhandler
1个回答
0
投票

完成处理程序不会结束函数。只有return结束功能。

© www.soinside.com 2019 - 2024. All rights reserved.