【问题标题】:RxJs Observable Zip Array of ObservablesRxJs Observable Zip 数组的 Observables
【发布时间】:2023-04-09 06:26:01
【问题描述】:

有一个使用 zip 组合固定数量的 observables 的示例,如下所示:

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*/;
      }
)

【问题讨论】:

    标签: javascript arrays observable


    【解决方案1】:

    理论上,您可以结合使用.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 */;
             });
         })
    );
    

    【讨论】:

      【解决方案2】:

      自从 ES6 出来后,你可以像这样简单地将数组作为参数传递给函数:

      const arr = [ observable1, observable2, ...]
      const source = Observable.zip(...arr)
      

      为我工作:D

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-06-06
        • 1970-01-01
        • 2017-12-17
        • 2017-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多