Spec-Zone.ru › Dart 2

dart:isolate

метод addOnExitListener

void addOnExitListener(
  1. SendPort responsePort,
  2. {Object? response}
)

Запрашивает отправку сообщения о завершении в responsePort при завершении изолята.

Перед завершением изолят отправит response в качестве сообщения в responsePort. После отправки сообщения он не будет выполнять дальнейший код.

Добавление одного и того же порта несколько раз приведёт к получению только одного сообщения о завершении. При этом будет использовано последнее добавленное значение ответа, а для удаления достаточно вызвать removeOnExitListener один раз.

Если изолят завершился до того, как смог получить этот запрос, сообщение о завершении отправлено не будет.

Объект response должен соответствовать тем же ограничениям, которые применяются в SendPort.send. Рекомендуется использовать только простые значения, которые можно отправлять всем изолятам, например null, логические значения, числа или строки.

Поскольку изоляты выполняются параллельно, изолят может завершиться до того, как будет установлен обработчик завершения. В этом случае ответ в responsePort отправлен не будет. Чтобы избежать этого, используйте соответствующий параметр функции spawn либо запустите изолят приостановленным, добавьте обработчик, а затем возобновите выполнение изолята.

Реализация

/* TODO(lrn): Can we do better? Can the system recognize this message and
 * send a reply if the receiving isolate is dead?
 */
external void addOnExitListener(SendPort responsePort, {Object? response});

© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-isolate/Isolate/addOnExitListener.html

Spec-Zone.ru

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