Spec-Zone.ru › React Native

InteractionManager

InteractionManager позволяет планировать длительные задачи после завершения любых взаимодействий/анимаций. В частности, это позволяет плавно выполнять JavaScript-анимации.

Приложения могут планировать задачи для выполнения после взаимодействия с помощью следующих методов:

InteractionManager.runAfterInteractions(() => {
  // ...long-running synchronous task...
});

Сравните это с другими альтернативами планирования:

  • requestAnimationFrame(): для кода, который анимирует представление во времени.
  • setImmediate/setTimeout(): выполняет код позже, обратите внимание, что это может замедлить анимации.
  • runAfterInteractions(): выполняет код позже, не замедляя активные анимации.

Система обработки касаний рассматривает одно или несколько активных касаний как «взаимодействие» и отложит runAfterInteractions() вызовы до тех пор, пока все касания не закончатся или не будут отменены.

InteractionManager также позволяет приложениям регистрировать анимации, создавая «обработчик» взаимодействия при запуске анимации и удаляя его по завершении:

var handle = InteractionManager.createInteractionHandle();
// run animation... (`runAfterInteractions` tasks are queued)
// later, on animation completion:
InteractionManager.clearInteractionHandle(handle);
// queued tasks run if all handles were cleared

runAfterInteractions принимает либо обычную функцию обратного вызова, либо объект PromiseTask с методом gen, возвращающим Promise. Если предоставлен PromiseTask, то он полностью разрешается (включая асинхронные зависимости, которые также планируют больше задач через runAfterInteractions) прежде чем приступить к следующей задаче, которая могла быть помещена в очередь синхронно ранее.

По умолчанию задачи в очереди выполняются вместе в цикле в одной setImmediate партии. Если setDeadline вызывается с положительным числом, то задачи будут выполняться только до тех пор, пока не приблизится крайний срок (с точки зрения времени работы цикла событий js), после чего выполнение будет передано через setTimeout, что позволит событиям, таким как касания, инициировать взаимодействия и блокировать выполнение задач в очереди, делая приложения более отзывчивыми.

Основные

Расширенные

Примечание: InteractionManager.runAfterInteractions() не работает должным образом в веб-браузере. Он срабатывает немедленно, не дожидаясь завершения взаимодействия.

Справочник

Методы

runAfterInteractions()

static runAfterInteractions(task)

Планирует выполнение функции после завершения всех взаимодействий. Возвращает отменяемый «объект обещания».

createInteractionHandle()

static createInteractionHandle()

Уведомляет менеджер о начале взаимодействия.

clearInteractionHandle()

static clearInteractionHandle(handle)

Уведомляет менеджер о завершении взаимодействия.

setDeadline()

static setDeadline(deadline)

Положительное число будет использовать setTimeout для планирования любых задач после того, как eventLoopRunningTime достигнет значения крайнего срока, в противном случае все задачи будут выполнены в одной партии setImmediate (по умолчанию).

© 2022 Facebook Inc.
Licensed under the Creative Commons Attribution 4.0 International Public License.
https://reactnative.dev/docs/interactionmanager

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API