Spec-Zone.ru › Dart 1

dart:async

Метод lastWhere

Future lastWhere(bool test(T element), { Object defaultValue() })

Ищет последний элемент в этом потоке, соответствующий test.

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

Исходный код

Future<dynamic> lastWhere(bool test(T element), {Object defaultValue()}) {
  _Future<dynamic> future = new _Future();
  T result = null;
  bool foundResult = false;
  StreamSubscription subscription;
  subscription = this.listen(
      (T value) {
        _runUserCode(() => true == test(value), (bool isMatch) {
          if (isMatch) {
            foundResult = true;
            result = value;
          }
        }, _cancelAndErrorClosure(subscription, future));
      },
      onError: future._completeError,
      onDone: () {
        if (foundResult) {
          future._complete(result);
          return;
        }
        if (defaultValue != null) {
          _runUserCode(defaultValue, future._complete, future._completeError);
          return;
        }
        try {
          throw IterableElementError.noElement();
        } catch (e, s) {
          _completeWithErrorCallback(future, e, s);
        }
      },
      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/lastWhere.html

Spec-Zone.ru

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