val method1 = async { getMethod1Data() }
val method2 = async { getMethod2Data() }
val method3 = async { getMethod3Data() }
awaitAll(method1, method2, method3)
val resultOfMethod1 = method1.await()
val resultOfMethod2 = method2.await()
Если нет, то как мне получить результат у deferred, после вызова метода awaitAll()? Интересно, не выполняется ли функция getMethod*N*Data() несколько раз из-за вызова awaitAll и await
Возвращаемый тип у методов getMethod*N*Data() разный и поэтому возвращается список deferred с типом Any Ищу решение без дополнительных проверок на тип
Да, на первый взгляд всё ок. await не может запустить вычисление ещё раз.
Только не очень понятно, а зачем вообще awaitAll?
А разве предложенный (первый) вариант не страдает тем же, что и map { it.await() } по сравнению с awaitAll()? Т.е. если method3 упадёт с ошибкой, то запускаемый код разве не подождёт method1 и method2 вместо того, чтобы упасть сразу?
нет, не страдает первый вариант, т.к. при вызове функции async сразу запускается выполнение как в launch
Обсуждают сегодня