Jak mogę sprawić, że mój kod będzie czekał do zakończenia zadania w punkcie DispatchQueue? Czy potrzebuje jakiegokolwiek narzędzia CompletionHandler lub czegoś takiego?Oczekiwanie na zakończenie zadania
func myFunction() {
var a: Int?
DispatchQueue.main.async {
var b: Int = 3
a = b
}
// wait until the task finishes, then print
print(a) // - this will contain nil, of course, because it
// will execute before the code above
}
Używam Xcode 8.2 i pisania w Swift 3.
Chcę wykonać funkcję w innej klasie, ale chcę poczekać, aby zakończyć tę funkcję, a następnie w obecnej klasie nadal, w jaki sposób mogę obsłużyć to? –
@SaeedRahmatolahi: Użyj metody 'wait' (jeśli nie ma problemu z zablokowaniem, tzn. Jeśli nie znajdujesz się w głównym wątku) lub podaj procedurę obsługi zakończenia lub użyj metody powiadamiania w klasie wywołującej. – shallowThought
Dlaczego nazywacie 'group.enter' poza blokiem async? Czy nie powinien to być każdy blok odpowiedzialny za wchodzenie i opuszczanie grupy? – Bill