@lifaon/rx-js-light
Version:
Blazing fast Observables
41 lines (40 loc) • 1.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.combineLatest = void 0;
var single_1 = require("../../values/single/single.cjs");
function combineLatest(observables) {
var length = observables.length;
if (length === 0) {
return (0, single_1.single)([]);
} else {
return function (emit) {
var values = Array.from({
length: length
});
var received = Array.from({
length: length
});
var receivedCount = 0;
var unsubscribe = observables.map(function (subscribe, index) {
return subscribe(function (value) {
values[index] = value;
if (!received[index]) {
received[index] = true;
receivedCount++;
}
if (receivedCount === length) {
emit(values);
}
});
});
return function () {
for (var i = 0, l = unsubscribe.length; i < l; i++) {
unsubscribe[i]();
}
};
};
}
}
exports.combineLatest = combineLatest;