Объединить трубы в массив с угловым Observable

У меня есть Observable, где я подключаю его к нескольким каналам следующим образом.

getOrders(filters: any, page: any = 1, orderBy: string = 'deliver_on', sort: string = 'asc') {

  const opCityPipe = pipe(
    filter((obj: any) => obj.payload.order.op_city_id === 1)
  );

  const storeRefPipe = pipe(
    filter((obj: any) => obj.payload.order.store.ref.match(/^Your.*/))
  );

  const statusPipe = pipe(
    filter((obj: any) => ['assign_request', 'accepted', 
    'in_store', 'en_route_to_client', 'arrived', 
    'canceled'].indexOf(obj.payload.order.status) !== -1)
  );

  return Observable.create((observer: Observer<any>) => {
     this.socket.on('private-order.status.changed.1:order.status', 
     (obj: any) => {
       observer.next(obj);
     });
  }).pipe(opCityPipe, storeRefPipe, statusPipe);
}

Как я могу сделать трубу массивом? Я хочу динамически заполнить его. Я попытался добавить массив, но получил ошибку.

ERROR TypeError: Object(...)(...) is not a function

Я хочу сделать что-то вроде

const pipes = [opCityPipe, storeRefPipe, statusPipe];
Observable.pipe(pipes);

ОБНОВИТЬ РЕШЕНИЕ

Observable.pipe(...pipes);

Можете ли вы показать ошибку, отображаемую при попытке добавить этот массив?

Mohamed Ali RACHID 09.04.2019 16:50
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, что это должно сработать, но ошибка, которую вы получаете, не ясна.

getOrders(filters: any, page: any = 1, orderBy: string = 'deliver_on', sort: string = 'asc') {

  const opCityPipe = filter((obj: any) => obj.payload.order.op_city_id === 1);

  const storeRefPipe = filter((obj: any) => obj.payload.order.store.ref.match(/^Your.*/));

  const statusPipe = filter((obj: any) => ['assign_request', 'accepted', 
    'in_store', 'en_route_to_client', 'arrived', 
    'canceled'].indexOf(obj.payload.order.status) !== -1);
   
  const filters = [opCityPipe, storeRefPipe, statusPipe]

  return Observable.create((observer: Observer<any>) => {
     this.socket.on('private-order.status.changed.1:order.status', 
     (obj: any) => {
       observer.next(obj);
     });
  }).pipe(...filters);
}

Другие вопросы по теме