This is RxJS v 4. Find the latest version here
Rx.Observable.prototype.groupJoin(right, leftDurationSelector, rightDurationSelector, resultSelector)
Correlates the elements of two sequences based on overlapping durations, and groups the results.
right
(Observable
): The right observable sequence to join elements for.leftDurationSelector
(Function
): A function to select the duration (expressed as an observable sequence) of each element of the left observable sequence, used to determine overlap.rightDurationSelector
(Function
): A function to select the duration (expressed as an observable sequence) of each element of the right observable sequence, used to determine overlap.resultSelector
(Any
): A function invoked to compute a result element for any element of the left sequence with overlapping elements from the right observable sequence. It has the following arguments- (
Any
) An element of the left sequence. - (
Observable
) An observable sequence with elements from the right sequence that overlap with the left sequence's element.
- (
(Observable
): An observable sequence that contains result elements computed from source elements that have an overlapping duration.
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.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
File:
Dist:
NPM Packages:
NuGet Packages:
Unit Tests: