Amb
данные из двух или более источниковых наблюдаемых, издавать все элементы только из первого из этих наблюдаемых, которые издадут элемент или уведомление
Когда вы передаёте несколько исходных наблюдаемых в Amb, он передаст исходящие данные и уведомления ровно из одной из этих наблюдаемых: первой, которая отправит уведомление в Amb, либо отправив элемент, либо отправив onError или onCompleted уведомление. Amb проигнорирует и отбросит исходящие данные и уведомления всех остальных исходных наблюдаемых.
См. также
Информация, специфичная для языка
RxGroovy amb ambWith
RxGroovy реализует этот оператор как amb. Он принимает до девяти наблюдаемых в качестве отдельных параметров или один итерируемый набор наблюдаемых. Также есть экземплярный вариант оператора, ambWith, так что, например, вместо написания Observable.amb(o1,o2) вы также можете написать o1.ambWith(o2) для достижения того же эффекта.
Этот оператор по умолчанию не работает с каким-либо конкретным Планировщиком.
- Javadoc:
amb(Iterable) - Javadoc:
amb(Observable,Observable)(также есть версии, которые принимают до девяти параметров Observable) - Javadoc:
ambWith(Observable)
RxJava 1․x amb ambWith
RxJava 1.x реализует этот оператор как amb. Он принимает до девяти наблюдаемых в качестве отдельных параметров или один итерируемый набор наблюдаемых. Также есть экземплярный вариант оператора, ambWith, так что, например, вместо написания Observable.amb(o1,o2) вы также можете написать o1.ambWith(o2) для достижения того же эффекта.
Этот оператор по умолчанию не работает с каким-либо конкретным Планировщиком.
- Javadoc:
amb(Iterable) - Javadoc:
amb(Observable,Observable)(также есть версии, которые принимают до девяти параметров Observable) - Javadoc:
ambWith(Observable)
RxJava 2․x amb ambArray ambWith
RxJava 2.x реализует этот оператор как amb. Он принимает итерируемый набор наблюдаемых в качестве параметра. Вы также можете использовать ambArray для передачи массива наблюдаемых. Также есть экземплярный вариант оператора, ambWith, так что, например, вместо написания Observable.ambArray([o1,o2]) вы также можете написать o1.ambWith(o2) для достижения того же эффекта.
Этот оператор по умолчанию не работает с каким-либо конкретным Планировщиком.
- Javadoc:
amb(Iterable) - Javadoc:
ambArray(Iterable) - Javadoc:
ambWith(Observable)
RxJS amb
RxJS реализует этот оператор как amb. Он принимает переменное количество параметров, которые могут быть либо наблюдаемыми, либо обещаниями (или комбинацией того и другого).
Пример кода
/* Using Observable sequences */
var source = Rx.Observable.amb(
Rx.Observable.timer(500).select(function () { return 'foo'; }),
Rx.Observable.timer(200).select(function () { return 'bar'; })
);
var subscription = source.subscribe(
function (x) { console.log('Next: ' + x); },
function (err) { console.log('Error: ' + err); },
function () { console.log('Completed'); }); Next: bar Completed
/* Using Promises and Observables */
var source = Rx.Observable.amb(
RSVP.Promise.resolve('foo')
Rx.Observable.timer(200).select(function () { return 'bar'; })
);
var subscription = source.subscribe(
function (x) { console.log('Next: ' + x); },
function (err) { console.log('Error: ' + err); },
function () { console.log('Completed'); }); Next: foo Completed
RxPHP race
RxPHP реализует этот оператор как race.
Распространяет последовательность наблюдаемых, которая реагирует первой. Также известен как 'amb'.
Пример кода
//from https://github.com/ReactiveX/RxPHP/blob/master/demo/race/race.php
$source = Rx\Observable::race(
[
Rx\Observable::timer(500)->map(function () {
return 'foo';
}),
Rx\Observable::timer(200)->map(function () {
return 'bar';
})
]
);
$source->subscribe($stdoutObserver); Next value: bar Complete!
© ReactiveX contributors
Licensed under the Apache License 2.0.
http://reactivex.io/documentation/operators/amb.html