которая выполняет некоторую джобу с делэем, если другая такая же не выполняется. Эта утилка вызывается на определенные действия пользователя, а также рекурсивно после выполнения предыдущей.
if (!job.isActive) {
job = scope.launch {
delay(delayMs)
action()
}
}
В конце тела action-а я хочу рекурсивно запустить следующий таймер, то есть вызываю эту утилку ещё раз, но в таком случае проверка !job.isActive не пройдёт, поскольку action ещё не завершился. Как мне добиться желаемого результата?
Так делайте не в рекурсии а в цикле 😊
Каким образом? Не очень понял
if (!job.isActive) { job = scope.launch { (1..10).forEach { delay(delayMs) action() } } } 😊
Это могло бы сработать, если бы утилка не была обособленным компонентом. Я не хочу в неё цикл добавлять
Ну в любом случае рекурсию можно развернуть в цикл. А так, есть предположение, что вы решаете не ту задачу. Попробуйте её переформулировать. Т.к. в текущем виде она звучит, как минимум странно.
Я попытался максимально абстрактно её описать) В моём кейсе цикл не прокатит потому, что тело выполняется в одном компоненте, а delay выставляется в другом. Сейчас обмозгую возможность чуть выше цикл присобачить) Спасибо в любом случае за идею)
Да. Скорее всего введение дополнительного слоя абстракции поможет. 😊
Обсуждают сегодня