Size: a a a

Kotlin Community

2020 February 06

VP

Vladimir Petrakovich in Kotlin Community
Alexander Nozik
да, но правда все равно не понятно, как отмену делать. Я бы сказал, что там вообще не должно быть никакого await, там надо вызывать onComplete у deferred, а еще лучше прямо внутри корутины
В смысле как? Вызвать cancel у job.
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Petrakovich
В смысле как? Вызвать cancel у job.
Так если он сразу джойнится после запуска, где вызвать-то?
источник

VP

Vladimir Petrakovich in Kotlin Community
Alexander Nozik
Так если он сразу джойнится после запуска, где вызвать-то?
Судя по всему, где-то снаружи 🤷‍♂️
источник

VP

Vladimir Petrakovich in Kotlin Community
Это же всё в launch завёрнуто
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Petrakovich
Судя по всему, где-то снаружи 🤷‍♂️
Так он внаружу не дойдет. Он локально создается и сразу джойнится
источник

VP

Vladimir Petrakovich in Kotlin Community
Очень похоже на AsyncTask на коленке
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Petrakovich
Это же всё в launch завёрнуто
отменять-то хотя внутренний джоб, а не топ левел
источник

AN

Alexander Nozik in Kotlin Community
С топ левелом проблем нет, его отменяешь, все, что внутри - умирает. Но тогда, действительно, нужно withContext и все
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Petrakovich
Очень похоже на AsyncTask на коленке
в асинктаске та же история, если он не выкидывается наружу, то отменить его не получится
источник

VP

Vladimir Petrakovich in Kotlin Community
Alexander Nozik
отменять-то хотя внутренний джоб, а не топ левел
Как я понял из контекста, job - это не локальная переменная. И из-за этого пляски с apply.
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Petrakovich
Как я понял из контекста, job - это не локальная переменная. И из-за этого пляски с apply.
ааа, этот момент пропустил.
источник

VP

Vladimir Petrakovich in Kotlin Community
Alexander Nozik
в асинктаске та же история, если он не выкидывается наружу, то отменить его не получится
Да там нормальной отменой вообще не пахнет 😄
источник

IS

Ivan Sablin in Kotlin Community
Vladimir Petrakovich
Очень похоже на AsyncTask на коленке
Ну да похоже, а что плохого, просто сделал колбеки для удобства, там типо чтобы показать прогресс, потом скрыть, а не все в onComplete пихать
источник

AN

Alexander Nozik in Kotlin Community
Ну ладно, тогда да, делается launch/async, а потом к нему просто join/await  без всяких apply
источник

AN

Alexander Nozik in Kotlin Community
чтоб не мусорить
источник

IS

Ivan Sablin in Kotlin Community
У меня до этого был launch, в нем Val result = withContext(background) и все
источник

IS

Ivan Sablin in Kotlin Community
Но решил, что лучше буду отменять конкретно то, что делается в другом контексте
источник

AN

Alexander Nozik in Kotlin Community
Ivan Sablin
Но решил, что лучше буду отменять конкретно то, что делается в другом контексте
ну нормально. apply блок раздражает, поскольку не нужен и создает проблемы для чтения, в остальном смотрите по вашей обвязке
источник

VP

Vladimir Petrakovich in Kotlin Community
Ivan Sablin
Ну да похоже, а что плохого, просто сделал колбеки для удобства, там типо чтобы показать прогресс, потом скрыть, а не все в onComplete пихать
Если это удобно, то ничего плохого. Но танцы с коллбеками обычно не выглядят читабельнее, чем простое последовательное выполнение действий.
источник

IS

Ivan Sablin in Kotlin Community
Alexander Nozik
ну нормально. apply блок раздражает, поскольку не нужен и создает проблемы для чтения, в остальном смотрите по вашей обвязке
Я его уже убрал, ввиду того что job интициализировался в конце
источник