RXJS объединяет таблицу наблюдаемых - PullRequest
0 голосов
/ 20 октября 2019

Я получаю наблюдаемые из ответа от Firestore. Затем я создаю список наблюдаемых в массиве. После того, как я хочу объединить этот список наблюдаемых с оператором объединения RXJS. Поскольку я никогда заранее не определяю количество результатов, которые нужно вставить в мой массив, мне нужно динамически получать наблюдаемые в операторе объединения.

Я попытался использовать массив .map, чтобы получить содержимое массива наблюдаемых. , но это не работает. Моя идея состоит в том, чтобы прийти к такому результату: 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;

1 Ответ

1 голос
/ 20 октября 2019

Я нашел ответ, читая этот пост: Как объединить массив Observables с RxJS 6.x и Node.js?

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

С помощью оператора распространения это работаетхорошо.

Требуется много времени, чтобы понять, как новые функции, такие как отображение, операторы распространения и т. д. работают в JavaScript. Особенно, если вы пришли из старой школы итераторов for и while :):

...