Spec-Zone.ru › Dart 2

dart:async

метод elementAt

Future<T> elementAt(
  1. int index
)

Возвращает значение события данных index-го порядка в этом потоке.

Перестаёт прослушивать этот поток после получения события данных index-го порядка.

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

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

Если до получения значения происходит событие завершения, Future завершается с ошибкой RangeError.

Реализация

Future<T> elementAt(int index) {
  RangeError.checkNotNegative(index, "index");
  _Future<T> result = new _Future<T>();
  int elementIndex = 0;
  StreamSubscription<T> subscription;
  subscription =
      this.listen(null, onError: result._completeError, onDone: () {
    result._completeError(
        new IndexError.withLength(index, elementIndex,
            indexable: this, name: "index"),
        StackTrace.empty);
  }, cancelOnError: true);
  subscription.onData((T value) {
    if (index == elementIndex) {
      _cancelAndValue(subscription, result, value);
      return;
    }
    elementIndex += 1;
  });

  return result;
}

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

Spec-Zone.ru

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