我的任务是相对于彼此同步调用具有特定顺序的函数。
我实现了我的功能,但由于某种原因,当我检查它时,我发现了一个异常。假设您列出了解决哪些权限的调用列表,并且当您停止解决第一个请求约 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)
})
}
}
}
}