Выбор ответа Junior Архитектура и новая архитектура спрашивают часто обновлено
React Native: что будет при блокировке JS-потока
Вопрос
В обработчике нажатия запущен синхронный цикл на 2 секунды. Что увидит пользователь?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Нажатия перестанут обрабатываться, JS-анимации замрут, нативная прокрутка ещё работает. Весь JS (React, обработчики, логика) выполняется в одном JS-потоке.
Варианты ответа
- Нажатия перестанут обрабатываться, JS-анимации замрут, нативная прокрутка ещё работаетправильный ответ
- Ничего: React Native автоматически переносит долгий синхронный код в фоновый поток
- Приложение сразу упадёт с ошибкой о превышении времени выполнения обработчика
- Зависнет только этот компонент, а остальной интерфейс продолжит работать как обычно
Разбор
Весь JS (React, обработчики, логика) выполняется в одном JS-потоке. Пока он занят, события не обрабатываются и анимации на JS не обновляются. Нативный UI-поток свободен, поэтому нативная прокрутка и анимации с native driver продолжают идти. Автоматического переноса в фон нет, падения тоже нет, а изоляции по компонентам не существует.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.