Spec-Zone.ru › ReactiveX

Объединение

Объединяет элементы, испускаемые двумя Observable, всякий раз, когда элемент из одного Observable испускается в течение временного интервала, определенного элементом, испускаемым другим Observable
Join

Оператор Join объединяет элементы, испускаемые двумя Observable, и выбирает, какие элементы объединить, на основе временных окон, которые вы определяете на основе каждого элемента. Вы реализуете эти окна как Observable, чьи жизненные циклы начинаются с каждого элемента, испускаемого одним из Observable. Когда такое Observable, определяющее окно, испускает элемент или завершается, окно для ассоциированного с ним элемента закрывается. Пока окно элемента открыто, он будет объединяться с любым элементом, испускаемым другим Observable. Вы определяете функцию, посредством которой элементы объединяются.

GroupJoin

Большинство реализаций ReactiveX, имеющие оператор Join, также имеют оператор GroupJoin, который похож, за исключением того, что функция, которую вы определяете для объединения элементов, испускаемых двумя Observable, сопоставляет отдельные элементы, испускаемые исходным Observable, не с элементом из второго Observable, а с Observable, который испускает элементы из второго Observable, попадающие в то же окно.

См. также

  • CombineLatest
  • Zip
  • Введение в Rx: Объединение
  • Введение в Rx: Групповое объединение
  • 101 Примеры Rx: Групповое объединение — Объединение двух потоков по соответствию одному из их атрибутов

Сведения о языке

RxGroovy join groupJoin

join

Оператор join принимает четыре параметра:

  1. второе Observable для объединения с исходным Observable
  2. функцию, которая принимает элемент из исходного Observable и возвращает Observable, чья продолжительность жизни определяет длительность, в течение которой этот элемент будет объединяться с элементами из второго Observable
  3. функцию, которая принимает элемент из второго Observable и возвращает Observable, чья продолжительность жизни определяет длительность, в течение которой этот элемент будет объединяться с элементами из первого Observable
  4. функцию, которая принимает элемент из первого Observable и элемент из второго Observable и возвращает элемент, который будет испускаться Observable, возвращаемым из join

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

  • Javadoc: Join(Observable,Func1,Func1,Func2)
join

Оператор groupJoin принимает четыре параметра:

  1. второе Observable для объединения с исходным Observable
  2. функцию, которая принимает элемент из исходного Observable и возвращает Observable, чья продолжительность жизни определяет длительность, в течение которой этот элемент будет объединяться с элементами из второго Observable
  3. функцию, которая принимает элемент из второго Observable и возвращает Observable, чья продолжительность жизни определяет длительность, в течение которой этот элемент будет объединяться с элементами из первого Observable
  4. функцию, которая принимает элемент из первого Observable и Observable, испускающее элементы из второго Observable, и возвращает элемент, который будет испускаться Observable, возвращаемым из groupJoin

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

  • Javadoc: groupJoin(Observable,Func1,Func1,Func2)
join

Обратите внимание, что в необязательном классе StringObservable также есть оператор join. Он преобразует Observable, испускающее последовательность строк, в Observable, испускающее одну строку, которая объединяет их все, разделяя их указанным символом-разделителем.

RxJava 1․x join groupJoin

join

Оператор join принимает четыре параметра:

  1. второй Observable для объединения с исходным Observable
  2. функцию, которая принимает элемент из исходного Observable и возвращает Observable, срок действия которого управляет продолжительностью объединения этого элемента с элементами второго Observable
  3. функцию, которая принимает элемент из второго Observable и возвращает Observable, срок действия которого управляет продолжительностью объединения этого элемента с элементами первого Observable
  4. функцию, которая принимает элемент из первого Observable и элемент из второго Observable и возвращает элемент, который будет испущен Observable, возвращаемым из join

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

  • Javadoc: Join(Observable,Func1,Func1,Func2)
join

Оператор groupJoin принимает четыре параметра:

  1. второй Observable для объединения с исходным Observable
  2. функцию, которая принимает элемент из исходного Observable и возвращает Observable, срок действия которого управляет продолжительностью объединения этого элемента с элементами второго Observable
  3. функцию, которая принимает элемент из второго Observable и возвращает Observable, срок действия которого управляет продолжительностью объединения этого элемента с элементами первого Observable
  4. функцию, которая принимает элемент из первого Observable и Observable, испускающий элементы из второго Observable, и возвращает элемент, который будет испущен Observable, возвращаемым из groupJoin

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

  • Javadoc: groupJoin(Observable,Func1,Func1,Func2)
join

Обратите внимание, что в дополнительном классе StringObservable также есть оператор join. Он преобразует Observable, испускающий последовательность строк, в Observable, испускающий одну строку, которая конкатенирует все строки, разделяя их указанным разделителем строк.

RxJS join groupJoin

join

Оператор join принимает четыре параметра:

  1. второй Observable для объединения с исходным Observable
  2. функцию, которая принимает элемент из исходного Observable и возвращает Observable, срок действия которого управляет продолжительностью объединения этого элемента с элементами второго Observable
  3. функцию, которая принимает элемент из второго Observable и возвращает Observable, срок действия которого управляет продолжительностью объединения этого элемента с элементами первого Observable
  4. функцию, которая принимает элемент из первого Observable и элемент из второго Observable и возвращает элемент, который будет испущен Observable, возвращаемым из join

Пример кода

var xs = Rx.Observable.interval(100)
    .map(function (x) { return 'first' + x; });

var ys = Rx.Observable.interval(100)
    .map(function (x) { return 'second' + x; });

var source = xs
    .join(
        ys,
        function () { return Rx.Observable.timer(0); },
        function () { return Rx.Observable.timer(0); },
        function (x, y) { return x + y; }
    )
    .take(5);

var subscription = source.subscribe(
    function (x) { console.log('Next: ' + x); },
    function (err) { console.log('Error: ' + err); },
    function () { console.log('Completed'); });
Next: first0second0
Next: first1second1
Next: first2second2
Next: first3second3
Next: first4second4
Completed
join

Оператор groupJoin принимает четыре параметра:

  1. второй Observable для объединения с исходным Observable
  2. функцию, которая принимает элемент из исходного Observable и возвращает Observable, срок действия которого управляет продолжительностью объединения этого элемента с элементами второго Observable
  3. функцию, которая принимает элемент из второго Observable и возвращает Observable, срок действия которого управляет продолжительностью объединения этого элемента с элементами первого Observable
  4. функцию, которая принимает элемент из первого Observable и Observable, испускающий элементы из второго Observable, и возвращает элемент, который будет испущен Observable, возвращаемым из groupJoin

Пример кода

ar xs = Rx.Observable.interval(100)
    .map(function (x) { return 'first' + x; });

var ys = Rx.Observable.interval(100)
    .map(function (x) { return 'second' + x; });

var source = xs.groupJoin(
    ys,
    function () { return Rx.Observable.timer(0); },
    function () { return Rx.Observable.timer(0); },
    function (x, yy) {
        return yy.select(function (y) {
            return x + y;
        })
    }).mergeAll().take(5);

var subscription = source.subscribe(
    function (x) { console.log('Next: ' + x); },
    function (err) { console.log('Error: ' + err); },
    function () { console.log('Completed'); });
Next: first0second0
Next: first1second1
Next: first2second2
Next: first3second3
Next: first4second4
Completed

Операторы join и groupJoin присутствуют в каждом из следующих распределений:

  • rx.all.js
  • rx.all.compat.js
  • rx.coincidence.js

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

Spec-Zone.ru

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