169 похожих чатов

Здравствуйте. Делаю retrofit запрос с помощью курутинов. Как я могу

использовать результат, только после того, как оно вернётся?

17 ответов

7 просмотров

Чо?

lil meow meow- Автор вопроса

Я хочу обработать результат. Он возвращается через 1-2 секунды и я вот не знаю, как мне обратиться к нему

Код скинь

Функции ретрофита являются suspend, их нужно запускать из соответствующей корутины, которая приостановится до момента возвращения результата, вот и все. В следующий слой эти данные лучше всего эмитить через Flow, а получать с помощью collect или других функций.

lil meow meow- Автор вопроса

Вот код (https://dpaste.org/HoQ2). Я получаю json и хочу его спарсить и только после вывести на экран. P.S. Не судите строго по коду))

_jsonString.value = BookApi.retrofitService.getJson("harry") После него вызывай parseJson()

Что именно у вас там не выходит? На первый взгляд выглядит более-менее рабочим. И, кстати, корутины, а не курутины)

lil meow meow- Автор вопроса

У меня выходила эта ошибка(https://dpaste.org/3uzz) и от туда я сделал такой вывод. Хотя, причина может быть совсем другая. Но я предположил, что парсю пустую строку, так-как ответ не успевает приходить

lil meow meow- Автор вопроса

Запомнил)

Там написано, что вы где-то пытаетесь вместо String поставить JSONObject. Хотя странно, что студия не помешала вам сама это сделать

lil meow meow- Автор вопроса

Она ругается на эту строку val root = JSONObject(jsonString.toString()). Но дело в том, что я передаю строку

Точнее он говорит, что не может jsonString конвертировать в String. Ща ещё раз гляну ваш код

lil meow meow- Автор вопроса

Вот json результат (https://www.googleapis.com/books/v1/volumes?q=harry)

Глянул. jsonString - это у вас ливдата же, toString() для нее не годится. У нее value есть, вроде

lil meow meow- Автор вопроса

Да! Спасибо! Сделал как сказал @no_name1512 и вместо toString, поставил jsonString.value!!. Так себе код, но рабочий. Спасибо за помощь!

Вы аккуратнее с оператором !!. Лучше нормальную проверку с if или let реализуйте. Иначе однажды есть шанс получить npe в неподходящий момент.

lil meow meow- Автор вопроса

Ага. Спасибо большое! Исправлю этот момент.

Похожие вопросы

Обсуждают сегодня

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Открыл свой двухкилобайтный экзешник в x32dbg, а тут какая-то хрень. Смущает кнопка "выполнить до пользовательского кода", а что ещё может быть в файле помимо него ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
11
Мне были интересны дишные хаки и я нашёл любопытный способ на форуме через __traits, что-то вроде int delegate(int) fac = (int n) => n == 0 ? 1 : n * __traits(parent, {})(n - ...
Constantin F.
1
Вопрос тем кто смотрит видео и слушает подкасты - как вы потом ищете нужную вам информацию? Вот статью я прочитал, потом могу искать нужную мне часть банальным поиском. Пропус...
Aleksandr Druzhinin
4
Всем привет, подскажите/посоветуйте пожалуйста. Фаердак компоненты, имею одно место где бизнес хочет видеть при открытии формы список всех клиентов, это порядка 30к. Мои дово...
Sasha Sch
14
Ребят, если кто в курсе - скажите, а в загранке такое же засилье маркетплейсов? или там простые сермяжные интернет-магазины живут попроще?
Андрей [aharito] Харитонов
14
Коллеги, доброе утро. Запустил на удаленном хосте приложение (ручками зашел туда по ssh и запустил, не командой удаленно). Создал потом ssh-туннель, и с моей машины приложение...
Δημήτηρ
9
Карта сайта