Spec-Zone.ru › Dart 1

dart:async

Метод elementAt

Future<T> elementAt(int index)

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

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

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

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

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

Исходный код

Future<T> elementAt(int index) {
  if (index is! int || index < 0) throw new ArgumentError(index);
  _Future<T> future = new _Future<T>();
  StreamSubscription subscription;
  int elementIndex = 0;
  subscription = this.listen(
      (T value) {
        if (index == elementIndex) {
          _cancelAndValue(subscription, future, value);
          return;
        }
        elementIndex += 1;
      },
      onError: future._completeError,
      onDone: () {
        future._completeError(
            new RangeError.index(index, this, "index", null, elementIndex));
      },
      cancelOnError: true);
  return future;
}

© 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/Stream/elementAt.html

Spec-Zone.ru

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