callback'и. Как известно, корутины могут превращать callback-style в последовательный код. Поэтому, да, идея не лишена смысла.
Но withPlugin это, наверное, неподходящий пример, ведь этот callback вызывается из-за действия сторонних сил.
По сути, он эквивалентен if (plugin exists) {...}
А вот afterEvaluate, да, часто используется в духе: мы тут объявим Property (~Deferred) и потом в afterEvaluate callback'е смотрим чем заполнено значение. Но и тут непонятно. Нельзя же переходить в suspended после публикации первого же Property/extension? Получится, что у нас сначала будет код, который 'публикует api', а потом обработка. Неочень-то и похоже на корутины.
WithPlugin работает не 'если', а 'когда'. Он тоже отложенный. В остальном, разумеется там надо внутреннюю логику менять и добавлять колбэки везде и потом эти колбэки в корутины заворачивать. Насчёт перехода в суспенд, получится, что любое конфигурирование будет в своем ланче в скоупе конфигуратора.
Обсуждают сегодня