Spec-Zone.ru › Dart 1

dart:async

Класс Zone

Область представляет среду, остающуюся стабильной во время асинхронных вызовов.

Код всегда выполняется в контексте области, доступной как Zone.current. Изначальная main функция выполняется в контексте по умолчанию (область Zone.ROOT). Код может быть выполнен в другой области, используя runZoned для создания новой области или Zone.run для выполнения кода в контексте существующей области, вероятно, созданной с помощью Zone.fork.

Разработчики могут создать новую область, которая переопределяет некоторые функции существующей области. Например, пользовательские области могут заменить или изменить поведение print, таймеров, микрозадач или обработки необработанных ошибок.

Класс Zone не может быть подклассом, но пользователи могут предоставить пользовательские области, разделив существующую область (обычно Zone.current) с помощью ZoneSpecification. Это похоже на создание нового класса, который расширяет базовый Zone класс и переопределяет некоторые методы, но без фактического создания нового класса. Вместо этого переопределяющие методы предоставляются как функции, которые явно принимают эквивалент своего собственного класса, класса "super" и объекта this в качестве параметров.

Асинхронные обратные вызовы всегда выполняются в контексте области, где они были запланированы. Это реализуется в два шага:

  1. обратный вызов сначала регистрируется с помощью одной из функций registerCallback, registerUnaryCallback или registerBinaryCallback. Это позволяет области записывать существование обратного вызова и потенциально изменять его (возвращая другой обратный вызов). Код, выполняющий регистрацию (например, Future.then), также запоминает текущую область, чтобы затем мог выполнить обратный вызов в этой области.
  2. В какой-то момент зарегистрированный обратный вызов выполняется в сохранённой области.

Все это обрабатывается кодом платформы, и большинство пользователей не должны об этом беспокоиться. Однако разработчики новых асинхронных операций, предоставляемых базовой системой или через расширения нативных функций, должны следовать протоколу для совместимости с областями.

Для удобства, области предоставляют bindCallback (и соответствующие bindUnaryCallback или bindBinaryCallback), чтобы упростить соблюдение контракта области: эти функции сначала вызывают соответствующие register функции, а затем оборачивают возвращённую функцию таким образом, что она будет выполняться в текущей области, когда она впоследствии будет вызвана асинхронно.

Константы

ROOT → Zone

Корневая область.

_ROOT_ZONE

Статические свойства

current → Zone
только для чтения

Текущая активная область.

Свойства

errorZone → Zone
только для чтения

Область ошибок отвечает за обработку необработанных ошибок.

parent → Zone
только для чтения

Родительская область данной области.

hashCode → int
только для чтения, унаследованное

Хеш-код для этого объекта.

runtimeType → Type
только для чтения, унаследованное

Представление типа объекта во время выполнения.

Операторы

operator [](Object key) → dynamic

Возвращает значение области, связанное с key.

operator ==(other) → bool
унаследованное

Оператор равенства.

Методы

bindBinaryCallback<R, T1, T2>(R action(T1 argument1, T2 argument2), { bool runGuarded: true }) → ZoneBinaryCallback<R, T1, T2>

Эквивалентно:

bindCallback<R>(R action(), { bool runGuarded: true }) → ZoneCallback<R>

Эквивалентно:

bindUnaryCallback<R, T>(R action(T argument), { bool runGuarded: true }) → ZoneUnaryCallback<R, T>

Эквивалентно:

createPeriodicTimer(Duration period, void callback(Timer timer)) → Timer

Создаёт периодический таймер, где обратный вызов выполняется в этой области.

createTimer(Duration duration, void callback()) → Timer

Создаёт таймер, где обратный вызов выполняется в этой области.

errorCallback(Object error, StackTrace stackTrace) → AsyncError

Перехватывает ошибки, когда они добавляются программно в Future или Stream.

fork({ZoneSpecification specification, Map zoneValues }) → Zone

Создаёт новую область как дочернюю область this.

handleUncaughtError<R>(error, StackTrace stackTrace) → R

Обрабатывает необработанные асинхронные ошибки.

inSameErrorZone(Zone otherZone) → bool

Возвращает true, если this и otherZone находятся в одной области ошибок.

print(String line) → void

Выводит на печать заданную line строку.

registerBinaryCallback<R, T1, T2>(R callback(T1 arg1, T2 arg2)) → ZoneBinaryCallback<R, T1, T2>

Регистрирует данный обратный вызов в этой области.

registerCallback<R>(R callback()) → ZoneCallback<R>

Регистрирует данный обратный вызов в этой области.

registerUnaryCallback<R, T>(R callback(T arg)) → ZoneUnaryCallback<R, T>

Регистрирует данный обратный вызов в этой области.

run<R>(R action()) → R

Выполняет action в этой области.

runBinary<R, T1, T2>(R action(T1 argument1, T2 argument2), T1 argument1, T2 argument2) → R

Выполняет заданный action с argument1 и argument2 в этой области.

runBinaryGuarded<R, T1, T2>(R action(T1 argument1, T2 argument2), T1 argument1, T2 argument2) → R

Выполняет заданный action с argument1 и argument2 в этой области и перехватывает синхронные ошибки.

runGuarded<R>(R action()) → R

Выполняет заданный action в этой области и перехватывает синхронные ошибки.

runUnary<R, T>(R action(T argument), T argument) → R

Выполняет заданный action с argument в этой области.

runUnaryGuarded<R, T>(R action(T argument), T argument) → R

Выполняет заданный action с argument в этой области и перехватывает синхронные ошибки.

scheduleMicrotask(void action()) → void

Асинхронно выполняет action в этой области.

noSuchMethod(Invocation invocation) → dynamic
унаследованное

Вызывается, когда обращается к несуществующему методу или свойству.

toString() → String
унаследованное

Возвращает строковое представление этого объекта.

© 2012 the Dart project authors
Licensed under the Creative Commons Attribution-ShareAlike License v4.0.
https://api.dartlang.org/stable/1.24.3/dart-async/Zone-class.html

Spec-Zone.ru

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