Выбор ответа Middle Нативные модули обновлено

TurboModule: синхронные методы

Вопрос

Когда допустим синхронный метод TurboModule, например isLowPowerMode(): boolean?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Когда натив отвечает мгновенно, например читает флаг или константу. JSI позволяет синхронный вызов, но JS-поток ждёт, пока натив не вернёт результат.

Варианты ответа

  1. Всегда: синхронные вызовы через JSI бесплатны и ничего не блокируют
  2. Когда натив отвечает мгновенно, например читает флаг или константуправильный ответ
  3. Никогда: TurboModules поддерживают только методы, возвращающие Promise
  4. Только на iOS, а на Android синхронные методы TurboModule недоступны

Разбор

JSI позволяет синхронный вызов, но JS-поток ждёт, пока натив не вернёт результат. Для чтения флага это микросекунды, а для работы с диском или сетью это заморозка интерфейса. Асинхронные методы возвращают Promise, и натив может выполнить работу в фоне. Синхронные методы поддерживаются на обеих платформах.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.