Выбор ответа Senior Нативные модули обновлено
Передача больших данных между JS и нативом
Вопрос
Модуль обработки фото возвращает в JS отредактированное изображение размером 12 МБ. Как правильно спроектировать API?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Натив сохраняет результат в файл и возвращает путь file://... Даже без JSON-сериализации большие данные в куче JS дороги: base64 увеличивает объём на треть и создаёт огромную строку, массив пикселей ещё хуже, а множество мелких вызовов добавляет накладные расходы.
Варианты ответа
- Натив сохраняет результат в файл и возвращает путь
file://...правильный ответ - Вернуть base64-строку: через JSI она передаётся без каких-либо затрат
- Вернуть массив чисел с пикселями, чтобы JS мог сразу показать изображение
- Разбить картинку на части по 1 КБ и передать их сотнями отдельных вызовов
Разбор
Даже без JSON-сериализации большие данные в куче JS дороги: base64 увеличивает объём на треть и создаёт огромную строку, массив пикселей ещё хуже, а множество мелких вызовов добавляет накладные расходы. Пути к файлам почти ничего не стоят: и Image, и загрузчики умеют работать с файлами напрямую, а пиксели остаются в нативной памяти.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.