Что я пытаюсь сделать, так это последовательно выполнить цикл for, в котором я жду завершенияHandler() перед началом следующей итерации.
- Я должен дождаться возврата обработчика завершения перед итерацией
- Гарантированный возврат к обработчику завершения
- Я пытаюсь синхронно ждать в очереди с более низким приоритетом
Код:
// we're on the main queue
for index in 0..<count {
var outcome: Any?
let semaphore = DispatchSemaphore(value: 0)
let queue = DispatchQueue(label: "\(index) iteration")
// this will access a UI component and wait for user to
// enter a value that's passed to the completion handler
funcWithCompletionHandler() { [weak self] (result) in
outcome = result
semaphore.signal()
}
// wait here for the completion handler to signal us
queue.sync {
semaphore.wait()
if let o = outcome {
handleOutcome(outcome)
}
}
// now, we iterate
}
Я пробовал много других решений, которые я вижу здесь, ничего не работает.