Join

當一個 Observable 發射項目時,只要在根據另一個 Observable 發射的項目定義的時間視窗內,就將兩個 Observable 發射的項目組合起來。

Join

Join 操作符組合兩個 Observable 發射的項目,並根據您針對每個項目定義的持續時間視窗來選擇要組合的項目。您將這些視窗實作為 Observables,其生命週期從任一 Observable 發射的每個項目開始。當此類定義視窗的 Observable 發射項目或完成時,其關聯項目的視窗將關閉。只要項目的視窗處於開啟狀態,它就會與另一個 Observable 發射的任何項目組合。您定義項目組合的方式。

GroupJoin

大多數具有 Join 操作符的 ReactiveX 實現也有一個類似的 GroupJoin 操作符,不同之處在於您定義用於組合兩個 Observable 發射項目的函式,不是將來源 Observable 發射的個別項目與第二個 Observable 的項目配對,而是與一個 Observable 配對,該 Observable 發射第二個 Observable 在同一視窗內的項目。

另請參閱

特定語言資訊

待定

待定

join

join 操作符接受四個參數

  1. 要與來源 Observable 組合的第二個 Observable
  2. 一個函式,它接受來自來源 Observable 的項目,並傳回一個 Observable,該 Observable 的生命週期控制該項目與第二個 Observable 中的項目組合的持續時間
  3. 一個函式,它接受來自第二個 Observable 的項目,並傳回一個 Observable,該 Observable 的生命週期控制該項目與第一個 Observable 中的項目組合的持續時間
  4. 一個函式,它接受來自第一個 Observable 的項目和來自第二個 Observable 的項目,並傳回要由 join 傳回的 Observable 發射的項目

join 預設不在任何特定的 排程器上運作。

join

groupJoin 操作符接受四個參數

  1. 要與來源 Observable 組合的第二個 Observable
  2. 一個函式,它接受來自來源 Observable 的項目,並傳回一個 Observable,該 Observable 的生命週期控制該項目與第二個 Observable 中的項目組合的持續時間
  3. 一個函式,它接受來自第二個 Observable 的項目,並傳回一個 Observable,該 Observable 的生命週期控制該項目與第一個 Observable 中的項目組合的持續時間
  4. 一個函式,它接受來自第一個 Observable 的項目和一個發射第二個 Observable 項目的 Observable,並傳回要由 groupJoin 傳回的 Observable 發射的項目

groupJoin 預設不在任何特定的 排程器上運作。

join

請注意,在可選的 StringObservable 類別中也有一個 join 操作符。它將發射一系列字串的 Observable 轉換為一個發射單一字串的 Observable,該字串將它們全部串連起來,並以指定的字串分隔符號分隔。

join

join 操作符接受四個參數

  1. 要與來源 Observable 組合的第二個 Observable
  2. 一個函式,它接受來自來源 Observable 的項目,並傳回一個 Observable,該 Observable 的生命週期控制該項目與第二個 Observable 中的項目組合的持續時間
  3. 一個函式,它接受來自第二個 Observable 的項目,並傳回一個 Observable,該 Observable 的生命週期控制該項目與第一個 Observable 中的項目組合的持續時間
  4. 一個函式,它接受來自第一個 Observable 的項目和來自第二個 Observable 的項目,並傳回要由 join 傳回的 Observable 發射的項目

join 預設不在任何特定的 排程器上運作。

join

groupJoin 操作符接受四個參數

  1. 要與來源 Observable 組合的第二個 Observable
  2. 一個函式,它接受來自來源 Observable 的項目,並傳回一個 Observable,該 Observable 的生命週期控制該項目與第二個 Observable 中的項目組合的持續時間
  3. 一個函式,它接受來自第二個 Observable 的項目,並傳回一個 Observable,該 Observable 的生命週期控制該項目與第一個 Observable 中的項目組合的持續時間
  4. 一個函式,它接受來自第一個 Observable 的項目和一個發射第二個 Observable 項目的 Observable,並傳回要由 groupJoin 傳回的 Observable 發射的項目

groupJoin 預設不在任何特定的 排程器上運作。

join

請注意,在可選的 StringObservable 類別中也有一個 join 操作符。它將發射一系列字串的 Observable 轉換為一個發射單一字串的 Observable,該字串將它們全部串連起來,並以指定的字串分隔符號分隔。

join

join 操作符接受四個參數

  1. 要與來源 Observable 組合的第二個 Observable
  2. 一個函式,它接受來自來源 Observable 的項目,並傳回一個 Observable,該 Observable 的生命週期控制該項目與第二個 Observable 中的項目組合的持續時間
  3. 一個函式,它接受來自第二個 Observable 的項目,並傳回一個 Observable,該 Observable 的生命週期控制該項目與第一個 Observable 中的項目組合的持續時間
  4. 一個函式,它接受來自第一個 Observable 的項目和來自第二個 Observable 的項目,並傳回要由 join 傳回的 Observable 發射的項目

範例程式碼

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 的生命週期控制該項目與第二個 Observable 中的項目組合的持續時間
  3. 一個函式,它接受來自第二個 Observable 的項目,並傳回一個 Observable,該 Observable 的生命週期控制該項目與第一個 Observable 中的項目組合的持續時間
  4. 一個函式,它接受來自第一個 Observable 的項目和一個發射第二個 Observable 項目的 Observable,並傳回要由 groupJoin 傳回的 Observable 發射的項目

範例程式碼

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

在下列每個發行版本中都可以找到 joingroupJoin

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

待定