RxJs Observable Zip 可观察对象数组
RxJs Observable Zip Array of Observables
有一个使用 zip 组合固定数量的 observable 的示例,如下所示:
var range = Rx.Observable.range(0, 5);
var source = Observable.zip(
range,
range.skip(1),
range.skip(2),
function (s1, s2, s3) {
return s1 + ':' + s2 + ':' + s3;
}
)
我的问题是,如果我有一个可观察值数组(长度可以是任何值),如何实现像 zip 一样的效果?
var arr = [observable1, observable2, ..]; //like 100 of them!
var source = Observable.zip(
//how to put each observable here?
function (__how to put argument here?_) {
return /* loop through arguments*/;
}
)
理论上,您可以结合使用 .apply()
和 arguments
变量来完成此操作。完全披露:我没有尝试过这段代码。
var arr = [observable1, observable2, ..]; //like 100 of them!
var source = Observable.zip.apply(Observable,
arr.concat(function (varargs) { // using "varargs" purely for documentation
Array.prototype.forEach.apply(arguments, function (observableValue) {
/* do something with observableValue */;
});
})
);
自从 ES6 出来后,你可以简单地传递一个数组作为函数的参数:
const arr = [ observable1, observable2, ...]
const source = Observable.zip(...arr)
对我有用 :D
有一个使用 zip 组合固定数量的 observable 的示例,如下所示:
var range = Rx.Observable.range(0, 5);
var source = Observable.zip(
range,
range.skip(1),
range.skip(2),
function (s1, s2, s3) {
return s1 + ':' + s2 + ':' + s3;
}
)
我的问题是,如果我有一个可观察值数组(长度可以是任何值),如何实现像 zip 一样的效果?
var arr = [observable1, observable2, ..]; //like 100 of them!
var source = Observable.zip(
//how to put each observable here?
function (__how to put argument here?_) {
return /* loop through arguments*/;
}
)
理论上,您可以结合使用 .apply()
和 arguments
变量来完成此操作。完全披露:我没有尝试过这段代码。
var arr = [observable1, observable2, ..]; //like 100 of them!
var source = Observable.zip.apply(Observable,
arr.concat(function (varargs) { // using "varargs" purely for documentation
Array.prototype.forEach.apply(arguments, function (observableValue) {
/* do something with observableValue */;
});
})
);
自从 ES6 出来后,你可以简单地传递一个数组作为函数的参数:
const arr = [ observable1, observable2, ...]
const source = Observable.zip(...arr)
对我有用 :D