【问题标题】:swift 5 - recursive closure funcswift 5 - 递归闭包函数
【发布时间】:2020-11-06 06:36:27
【问题描述】:

所以我试图重现我自己的功能:

func finishConfigSession() {
    if let config =  self.handler?.configurationSession?.config {
       config.finishSession()
    }
}

func logOut(success: @escaping () -> Void, failure: @escaping () -> Void) {
        self.sdk.cancelCurrentRunningControlFlow()
        self.finishConfigSession()
        self.sdk.logoutAsynchronously(handler: { (result, error) in
            if (error != nil) {
                self.finishConfigSession()
                // call again to logout
                failure()
            } else {
                success()
            }
        })
}

当我遇到错误时,我想再次调用 logout func 以成功完成 func。 知道如何实现吗?

【问题讨论】:

  • self.logout(success: success, failure: failure) 那么呢?可能需要weak self
  • @Larme Oh man.... 我试过这个:self.logout(success:success(), failure: failure()) 真是个愚蠢的错误。谢谢!你可以把它作为答案

标签: ios swift recursion


【解决方案1】:

这就是答案:

func finishConfigSession() {
if let config =  self.handler?.configurationSession?.config {
   config.finishSession()
 }
}

    func logOut(success: @escaping () -> Void, failure: @escaping () -> Void) {
        self.sdk.cancelCurrentRunningControlFlow()
        self.finishConfigSession()
        self.sdk.logoutAsynchronously(handler: { [weak self] (result, error) in
            if (error != nil) {
                self?.logOut(success: success, failure: failure)
                failure()
            } else {
                success()
            }
        })
}

感谢@Larme 的帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 2018-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多