Spec-Zone.ru › ReactiveX

DefaultIfEmpty

выдавать элементы из исходной Observable, или значение по умолчанию, если исходная Observable ничего не выдаёт
DefaultIfEmpty

Оператор DefaultIfEmpty просто точно копирует исходную Observable, если исходная Observable выдаёт какие-либо элементы. Если исходная Observable завершается нормально (с onComplete) без выдачи каких-либо элементов, Observable, возвращаемая из DefaultIfEmpty, вместо этого выдаст значение по умолчанию по вашему выбору, прежде чем тоже завершится.

См. также

  • Введение в Rx: DefaultIfEmpty

Информация, специфичная для языка

RxGroovy defaultIfEmpty switchIfEmpty

defaultIfEmpty

RxGroovy реализует этот оператор как defaultIfEmpty.

Этот оператор по умолчанию не работает с каким-либо конкретным расписанием.

  • Javadoc: defaultIfEmpty(T)

Также есть новый оператор в RxGroovy 1.1 под названием switchIfEmpty , который, вместо выдачи резервного значения, если исходная Observable завершается без выдачи каких-либо элементов, выдаёт элементы из резервной Observable.

RxJava 1․x defaultIfEmpty switchIfEmpty

defaultIfEmpty

RxJava реализует этот оператор как defaultIfEmpty.

Этот оператор по умолчанию не работает с каким-либо конкретным расписанием.

  • Javadoc: defaultIfEmpty(T)

Также есть новый оператор в RxJava 1.1 под названием switchIfEmpty , который, вместо выдачи резервного значения, если исходная Observable завершается без выдачи каких-либо элементов, выдаёт элементы из резервной Observable.

Пример кода

Observable.empty().defaultIfEmpty(10).subscribe(
    val -> System.out.println("next: " + val),
    err -> System.err.println(err) ,
    () -> System.out.println("completed")
);
next: 10
completed

RxJava 2․x defaultIfEmpty switchIfEmpty

defaultIfEmpty

RxJava реализует этот оператор как defaultIfEmpty.

Этот оператор по умолчанию не работает с каким-либо конкретным расписанием.

  • Javadoc: defaultIfEmpty(T)

Пример кода

Flowable.empty().defaultIfEmpty(10).subscribe(
    val -> System.out.println("next: " + val),
    err -> System.err.println(err) ,
    () -> System.out.println("completed")
);
next: 10
completed

RxJS defaultIfEmpty

defaultIfEmpty

RxJS реализует defaultIfEmpty, но параметр, устанавливающий значение по умолчанию, является необязательным. Если вы не передадите это значение по умолчанию, defaultIfEmpty выдаст “null”, если исходная Observable завершается без выдачи чего-либо. (Обратите внимание, что выдача “null” — это не то же самое, что отсутствие выдачи.)

Пример кода

/* Without a default value */
var source = Rx.Observable.empty().defaultIfEmpty();

var subscription = source.subscribe(
    function (x) { console.log('Next: ' + x.toString()); },
    function (err) { console.log('Error: ' + err); },
    function () { console.log('Completed'); });
Next: null
Completed
/* With a defaultValue */
var source = Rx.Observable.empty().defaultIfEmpty(false);

var subscription = source.subscribe(
    function (x) { console.log('Next: ' + x.toString()); },
    function (err) { console.log('Error: ' + err); },
    function () { console.log('Completed'); });
Next: false
Completed

defaultIfEmpty присутствует в каждом из следующих дистрибутивов:

  • rx.js
  • rx.all.js
  • rx.all.compat.js
  • rx.compat.js
  • rx.lite.js
  • rx.lite.compat.js

RxPHP defaultIfEmpty

RxPHP реализует этот оператор как defaultIfEmpty.

Возвращает указанное значение Observable, если последовательность пуста.

Пример кода

//from https://github.com/ReactiveX/RxPHP/blob/master/demo/defaultIfEmpty/defaultIfEmpty.php

$source = \Rx\Observable::empty()->defaultIfEmpty(Rx\Observable::of('something'));

$subscription = $source->subscribe($stdoutObserver);
Next value: something
Complete!

© ReactiveX contributors
Licensed under the Apache License 2.0.
http://reactivex.io/documentation/operators/defaultifempty.html

Spec-Zone.ru

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