swift - 如何调用函数内部的 block ,谁在等待自身内部另一个函数的 block 完成?

标签 swift closures block

我有一种情况,在一个类中,我有3个函数。a,b和c函数。我在b里面调用c函数,在a里面调用b函数,但这里我有一个问题。
在哪里调用b函数完成块,一旦c的函数完成块被完全执行。
例如:

typealias fetchCompletionBlock = () -> Void

class abcd {

    func a() {
        b({
            print("b called completed")
        })
    }
    func b(_ onCompletion: @escaping fetchCompletionBlock) {
        c({
            print("c called completed")
        })
    }
    func c(_ onCompletion: @escaping fetchCompletionBlock) {
        print("c called")

        onCompletion()
    }
    //self.a()
}

var data = abcd()
data.a()

调用b函数完成块的位置。我知道它会在b函数体中,但我不知道确切的位置。
有人能帮忙吗。

最佳答案

在c函数完成处理程序中,应使用调用b函数完成块。
功能b应如下:

func b(_ onCompletion: @escaping fetchCompletionBlock) {
    c({
        print("c called completed")
        onCompletion()
    })
}

关于swift - 如何调用函数内部的 block ,谁在等待自身内部另一个函数的 block 完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44391080/

相关文章:

swift - 服务器 Swift 与 mongodb 管理器单例

JavaScript 闭包 - 程序流程

ruby-on-rails - 设置属性问题

ios - 广场 API + OAuth : How do I sign out of my iPad app?

ios - 如何使待办事项列表中生成的文本显示为彩色

ios - Xcode 7.2.1 Swift 2.1.1 无法将类型 'Dictionary<_,_>' 的值分配给类型 'Dictionary'

javascript - 如果 Javascript 中的 "with"语句创建了一个新的作用域,为什么这个闭包每次都不包含新作用域中的新的 "x"?

javascript - jquery animate 回调直到最终循环才执行

ruby - 我可以将一个本身需要一个 block 的 block 传递给 ruby​​ 中的 instance_exec 吗?

sockets - 如何知道继续从套接字输入流读取是否安全(避免读取 block )