0

我的任务是相对于彼此同步调用具有特定顺序的函数。

我实现了我的功能,但由于某种原因,当我检查它时,我发现了一个异常。假设您列出了解决哪些权限的调用列表,并且当您停止解决第一个请求约 1 分钟时,其他权限将通过

class RunFuncs {
    typealias TypeFuncCall<T> = ((_ completed: @escaping (T) -> Void) -> Void)
    static func cascad<T>(dispatchQueue queue: DispatchQueue,
                          callFuncs funcs: [TypeFuncCall<T>], 
                          indexFuncRun index: Int = 0,
                          completedAll: @escaping (([T]) -> Void)) {
        queue.async {
            guard (funcs.count > index) else {
                completedAll([T]())
                return
            }
            let callOne = funcs[index]
            let indexNext = (index + 1)
            callOne() { [completedAll, funcs, indexNext] (resultOne) in
                RunFuncs.cascad(dispatchQueue: queue,
                                callFuncs: funcs,
                                indexFuncRun: indexNext,
                                completedAll: { (resultOther) in
                    var resultAll = resultOther
                    resultAll.insert(resultOne, at: 0)
                    completedAll(resultAll)
                })
            }
        }
    }
}
4

0 回答 0