Выбор ответа Junior Архитектура и новая архитектура спрашивают часто обновлено

React Native: что будет при блокировке JS-потока

Вопрос

В обработчике нажатия запущен синхронный цикл на 2 секунды. Что увидит пользователь?

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

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

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

Коротко

Правильный ответ: Нажатия перестанут обрабатываться, JS-анимации замрут, нативная прокрутка ещё работает. Весь JS (React, обработчики, логика) выполняется в одном JS-потоке.

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

  1. Нажатия перестанут обрабатываться, JS-анимации замрут, нативная прокрутка ещё работаетправильный ответ
  2. Ничего: React Native автоматически переносит долгий синхронный код в фоновый поток
  3. Приложение сразу упадёт с ошибкой о превышении времени выполнения обработчика
  4. Зависнет только этот компонент, а остальной интерфейс продолжит работать как обычно

Разбор

Весь JS (React, обработчики, логика) выполняется в одном JS-потоке. Пока он занят, события не обрабатываются и анимации на JS не обновляются. Нативный UI-поток свободен, поэтому нативная прокрутка и анимации с native driver продолжают идти. Автоматического переноса в фон нет, падения тоже нет, а изоляции по компонентам не существует.

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

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