Spec-Zone.ru › Dart 2

dart:async

Первое свойство

Future<T> first

Первый элемент этого потока.

Прекращает прослушивание этого потока после получения первого элемента.

Внутренне метод отменяет свою подписку после получения первого элемента. Это означает, что потоки с одиночной подпиской (не широковещательные) закрываются и не могут быть повторно использованы после вызова этого метода-свойства.

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

Если этот поток пуст (событие завершения происходит до первого события данных), возвращаемое будущее завершается с ошибкой.

За исключением типа ошибки, этот метод эквивалентен this.elementAt(0).

Реализация

Future<T> get first {
  _Future<T> future = new _Future<T>();
  StreamSubscription<T> subscription =
      this.listen(null, onError: future._completeError, onDone: () {
    try {
      throw IterableElementError.noElement();
    } catch (e, s) {
      _completeWithErrorCallback(future, e, s);
    }
  }, cancelOnError: true);
  subscription.onData((T value) {
    _cancelAndValue(subscription, future, value);
  });
  return future;
}

© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-async/Stream/first.html

Spec-Zone.ru

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