【问题标题】:RXJS combine a table of observablesRXJS 组合了一个可观察的表
【发布时间】:2019-10-20 15:28:02
【问题描述】:

我从 Firestore 的响应中获得了可观察的信息。然后我在一个数组中创建一个可观察的列表。在我想将这个 observables 列表与 RXJS 组合运算符结合起来之后。因为我现在从来没有提前将结果的数量推送到我的数组中,所以我需要在组合运算符中动态获取 observables。

我尝试了 .map 数组来获取 observables 数组的内容,但它不起作用。我的想法是达到这个结果: const combineAll = merge(queriesTab[0], queriesTab[1], queriesTab[2]).pipe(mergeAll()); 动态。

我尝试了const combineAll = merge(requetesTab.map(id => id+',')).pipe(mergeAll());,但它不起作用。

我尝试使用 array.join() 创建可观察字符串的列表,但它不起作用。我列出了同一主题的所有答案,但没有找到答案。我很确定.map 是可能的,但我现在不知道。感谢您的帮助。

var counter = 0;
      var queriesTab = [];
      for (counter=0; counter < secteurAct.length; counter++ ){
        var recup = this['requete' + counter];
        recup = this.firestore.collection('annonce', ref => ref
        .where("secteurActivite","==", secteurAct[counter])
        .orderBy("date"))
        .snapshotChanges().pipe(
          map(actions => actions.map(a => {
            const data = a.payload.doc.data();
            const id = a.payload.doc.id;
            return { id, ...data };
          }))
        );
        queriesTab.push(recup);
      }//End for

      const combineAll = merge(queriesTab[0], queriesTab[1], queriesTab[2]).pipe(mergeAll());
      return combineAll;

【问题讨论】:

    标签: angular google-cloud-firestore rxjs observable


    【解决方案1】:

    我在阅读这篇文章时找到了答案: How do I merge an array of Observables with RxJS 6.x and Node.js?

    const combineAll = merge(...queriesTab).pipe(mergeAll());
    

    使用展开运算符它工作正常。

    真正理解新函数如 map、spread 运算符等在 JavaScript 中的工作方式需要花费大量时间。尤其是当您来自 for 和 while 迭代器的老派时 :)

    【讨论】:

    • 或者from(queriesTab).pipe(mereMap(obs=&gt;obs))
    猜你喜欢
    • 2016-06-18
    • 2022-01-23
    • 1970-01-01
    • 2019-10-18
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多