straight pipe что это

Tuning Exhaust — Downpipe / Y-Pipe / H-Pipe — что это такое?!

Знай, о чем говорят мастера, когда делают тебе тюнинг выхлопа

Pipe или «пайп» переводится на русский язык как «труба». Под словом «пайпинг» при этом понимается трубопровод или система из труб. Собственно «exhaust system» — ( выхлопная система) любого автомобиля состоит в первую очередь из труб и каждый отрезок этих труб имеет свое название. И если некоторые из них, вроде «даунпайпа» плотно вошли в обиход российских тюнеров, то всё остальные никто не использует.
А еще хуже, когда используют колхозные понятия, вроде » трасса или тракт «…

Итак, сразу после головки блока цилиндров у нас находится первое изделие из труб — «exhaust manifold», он же «header», он же «collector», он же русский «выпускной коллектор» он же «паук». Как в русском так и в английском языке в случае турбомотора коллектор тоже имеет приставку «турбо».

Раннеры от слова «runner» — это трубы, которые идут от каждого цилиндра к тому месту, где они объединяются вместе. Если раннеры одинаковой длины — коллектор называют «равнодлинным».

«CatBack» или «КатБэк»

Сatback в переводе с английского почти похоже на что-то схожее с котом или кошкой, но увы это не так. КатБэк — это выхлопная система, идущая либо от катализатора, то есть позади его ( CAT — catalyst — катализатор ) и ( Back — задний — позади ). КатБэки пользуются популярностью на двигателях, которым нужно максимально свободно отводить выхлопные газы и чтобы этому процессу ничего не мешало.

Важным частным случаем коллектора являются кат-коллекторы или «manifold converter» — 90% современных автомобилей имеют коллекторы, в которые сразу интегрирован каталитический нейтрализатор. У них короткие раннеры, часто примитивный дизайн из штампованной стали а замена катализатора возможна только в сборе. Такая деталь при этом совсем не дешева и часто весьма «затычна» с точки зрения продувки, не столько из-за катализатора, сколько из-за не оптимального сечения и длины раннеров.

Названия труб после коллектора будут отличаться, в зависимости от того атмосферный мотор или турбированный. В тубо-моторе сразу от турбины начинается всеми любимый «downpipe» ( даунпайп ) дословно «труба идущая вниз», прямого аналога в русском нет, но «приемная труба» вполне подходит.

Еще одна труба со своим предназначением и названием — «dump pipe» или «dump tube» — трубка отвода газов от Вестгейта (перепускного клапана турбины). Присутствует в тех случаях когда вестгейт внешний или имеет на фланце турбины свой собственный отдельный выход. Если Вестгейт встроенный и не имеет своего отвода, то газы идут сразу в даунпайп и отдельной трубы не требуется.

В случае атмосферного мотора сразу за коллекторами следуют «front pipes» ( фронт пайпы ) или по-русски приемные трубы. В приемных трубах обычно установлен один или несколько каталитических нейтрализаторов или универсальные пламегасители.

Заменой фронт пайпам часто становятся «cat delete pipes» — приемные трубы без катализаторов, в которых один или несколько катализаторов удалены а на их месте прямая труба.
— Прошу заметить, что никаких «искрогасителей» и «стронгеров» при этом ни в «даунпайпах» ни в «фронт пайпах» нет и не бывает. Вы не найдете их аналогов в английском языке и не найдете этих изделий в ассортименте зарубежных компаний. Однако, если нужно снизить резонанс или вибрацию выхлопа ( звука) то иногда устанавливаются спец-компоненты, такие как спортивные катализаторы с увеличенным сечением или пламегасители спортивного типа. Устанавливаются эти компоненты в разрез пайпов.

После приемных труб (даунпайпа в турбо моторе или фронт пайпа в атмосферном моторе) начинается «middle section» — средняя часть выхлопа, она же » mid-pipe» Она обычно включает в себя первичный глушитель и части труб, идущие до заднего моста.

В атмосферных моторах с двойным симметричным или асиметричным выхлопом, на стыке приемных труб и средней части, появляются новые герои — всеми любимые H-pipe или X-pipe или их сочетания Y-pipe. В зависимости от конструкции и компоновки Х-pipe или H-pipe могут быть объединены с приемными трубами или быть отдельным элементом в средней части системы. Они могут быть как до так и после резонаторов, а то и вовсе интегрированы в сам резонатор или первичный глушитель. Эти компоненты отвечают в основном за смешивание выхлопных газов и их точный расчет дает уникальный бурлящий звук выхлопа типа АMG ( на моторах V-6 и более )

Заканчивает выхлоп всегда глушитель или «Muffler». Он может быть прямоточным, камерным, дипассивным ( управляемым с помощью заслонки ), круглым, овальным или плоским. Если он не нужен — то устанавливается «muffler delete pipe» — труба с насадкой без глушителя.

Теперь Вы все знаете) Понравилось? Ставьте лайк 👍 а можно и Reпост )
Удачного тюнинга exhaust system, Бро 😊

P.S. Мы что-то упустили или накосячили — гоу в комменты, критика воспринимается 🙂

ГлушакоФФ в СПБ: 8 (812) 988-77-91
Читайте наш БЛОГ на ДРАЙВ2
Заходите к нам на сайт: Тюнинг и ремонт глушителей — ГлушакоФФ
Вступайте в нашу группу VK: ГлушакоФФ
Приезжайте к нам в автосервис: Схема проезда

Источник

Даунпайп — что это за зверь такой, и так ли уж нужно его устанавливать?

Толчком для создания очередной статьи послужил резонный вопрос. А именно: с турбинами очень часто применяется даунпайп. Что же это за устройство такое и для чего он так необходим? Этот вопрос заинтересовал и меня тоже, потому и появилась в конечном итоге данная статья. В ней я постараюсь объяснить все тонкости как можно проще. Позволю себе отметить, что информация будет не хуже, чем в самой Википедии. В статье представлены, также, фотографии, а в конце размещено еще и видео. Все, для вашего максимального удобства.

Итак, начнем с расшифровок.

Downpipe (что в переводе с английского означает «водосточная труба») — это деталь выхлопной системы, которая применяется в «неофициальном» тюнинге. Основное предназначение даунпайпа — объединение турбины с системой выхлопа. Говоря проще, если стандартный глушитель не справляется со своей задачей, а обычно при турбировании движка это так и происходит, оптимальным выходом будет взять подходящую «трубу» с более высокими параметрами. Она-то и поможет нам подключить турбину. При этом, она лучше выполнит функцию глушителя, и гораздо лучше сможет сопротивляться горячим газам.

Структура и нюансы

Отсюда ясно, что даунпайп, это всего лишь труба, функция которой — подводить к турбине газы, направляющиеся от движка (а именно, горячие). Обычно она крупнее по размеру, чем родная система. Ее использование требует удаления таких деталей, как катализатор. В общем, состояние экологии никого, похоже, не волнует.

Возможно потребуется «изгнать» резонатор тоже. По сути, здесь делается все, чтобы максимально облегчить для газов выход.

Обратите внимание, что если вы решили установить даунпайп, потребуется улучшить и весь глушитель следом.

Структура имеет еще одно важное отличие — труба, так или иначе, должна быть оснащена гофрой, чтобы та заглушала вибрации.

Ниже представлены снимки уже готовых вариаций.

Есть ли в нем необходимость?

Можно ли не устанавливать даунпайп? Легко. Достаточно лишь не ставить на движок нештатную турбину. Потому что, как уже было описано выше, основная ее функция — соединить систему выхлопа с неоригинальным агрегатом.

Читайте также:  svn что это такое

Постараюсь объяснить на примере:

Итак, вы пожелали оснастить турбиной двигатель какой-нибудь модели Lada. И не компрессор, а самую, что ни на есть, настоящую турбину. И вы даже ее поставили. И что теперь? Ведь ей нужно иметь подвод уже отработанных газов от мотора. Заводской глушитель вам вряд ли удастся найти. По той простой причине, что АвтоВАЗ просто не создает их. Хотя бы потому, что не рассчитаны машины производства АвтоВАЗа под подобные улучшения. Что в итоге? Вы лезете в интернет в поисках решения своей внезапно возникшей проблемы.

А решение тут самое простое — даунпайп. В наше время работает множество предприятий, которые занимаются его изготовлением.

Разве заводские можно отыскать?

Разумеется. К примеру, большое распространение это имеет на американских, японских и европейских машинах. Причем на одну и ту же модель может быть до нескольких видов системы выхлопа.

И снова упрощенное пояснение:

Принцип таков. Вы уже являетесь счастливым владельцем мощного авто с турбированным движком, но в какой-то момент вам становится мало уже имеющейся мощности, и вы хотите еще больше. Это означает, что нужно поставить другую турбину. Следовательно, под нее требуется совершенно иной даунпайп. И за этим вы направляетесь в ближайший подходящий магазин запчастей. Где, вероятно, вы и сможете найти все необходимое.

Как создается, и главное — из чего?

На самом деле, все куда легче, чем кажется. Материалы используются высококачественные и, разумеется, не из дешевых. К примеру, жароустойчивая сталь или сплавы. Следует понимать, что это очень редкий материал, создающийся для автомобилей ручными методами.

Получается, так, что, вы приходите в данную компанию и говорите, к примеру: я приобрел турбину вот этого бренда для своей такой-то машины и мне нужно подключить ее. Рабочий снимает мерки и создает даунпайп конкретно под ваши нужды. Конечно, пример утрированный, но общую суть он показывает.

Делаем скидку на то, что вы вероятно приобретете в дополнение к даунпайпу коллектор более хорошего качества. К примеру, типа «паук».

• снять родной коллектор и заменить на новый;
• поставить турбину, подключить — настраивать на моторе;
• установить от коллектора даунпайп;
• от даунпайпа подключить выход горячих газов к турбине.

Вот, собственно, и все. Система готова к работе. Надеюсь, что мои пояснения были для вас понятны. И у вас таки сложилась в голове общая картина того, что же это все такое, и с чем его едят. Если же нет — посмотрите, пожалуйста, видео, прикрепленное ниже.

Что ж, на этом, пожалуй, все. Выражаю надежду, что информация оказалась вам полезна.

Источник

Пайпы

Есть возможность изготовить любой вид пайпа по индивидуальному проекту или мы поможем подобрать пайп для Вашего автомобиля из широкого ассортимента, представленного в наличие.

Услуги

Наш автоцентр «Лёха Выхлоп» специализируется на тюнинге и оптимизации работы выхлопных систем уже более 15 лет. Опытные специалисты проведут бесплатную компьютерную диагностику на современном оборудовании и дадут рекомендации по выхлопной системе Вашего транспорта. Вы можете записать на диагностику по телефону +7-903-129-20-00 или приехать к нам. Наш автосервис расположен по адресу: г. Москва, Сокольнический Вал 1, кор. 1.

Мы предоставляем широкий спектр услуг, касающихся пайпов:

Виды пайпов

Runner – каждая отдельная труба в выпускном коллекторе, которая идет от цилиндра. Если раннеры одной длины, то «паук» является равнодлинным.

Up-pipe (от англ. – «верхняя труба» ап-пайп) труба, подводящая воздух от коллектора к турбине двигателя (соответственно, на атмосферные двигатели не устанавливается). Может устанавливаться на турбированные двигатели для увеличения мощности двигателя и увеличения пропускной способности.

Смотрите фотографии качественных выхлопных систем в нашей

Mid-pipe (мид-пайп,«серединная» труба в переводе с англ)- является трубой между даунпайпом и вторым катализатором. Так же, как и даун-пайп, может устанавливаться не только на турбированные двигатели, но и на атмосферные.

X-pipe – элемент выхлопной системы, который выполнен в форме буквы Х (две приемные трубы соединяются и расходятся в месте где наиболее выражены импульсы и давление). Дает более равномерную продувку цилиндров двигателя.

H-pipe – является схожим элементом, что и х-пайп, но выполнен в форме буквы Н. Отличие от х-пайпа в том, что в Н-пайпе выхлопные газы стабилизируются путем обмена волнами сжатия и разрежения. А в Х-пайпе добавляется еще и обмен импульсами.

Y-pipe – тоже элемент из приемных труб, где две трубы соединены в одну. Чаще всего их устанавливают для раздвоения (выведения на две стороны) выхлопной системы.

T-pipe («тройник»)- компонент выхлопной системы, напоминающий букву Т. Его устанавливают для разводки выхлопной системы на обе стороны, как и У-пайп.

Cross-pipe –один из видов труб, является прекрасной альтернативой для Х-пайпа и Н-пайпа. Он делит потоки выхлопных газов пополам, а за счет уменьшения диаметра и плавного соединения труб достигается максимальный разгон потока отработанных газов. Обычно выглядит как 4 трубы, сваренные попарно и спирально закрученные.

Test-pipe – название для стронгера/пламегасителя/высокотемпературного резонатора или любого элемента, который устанавливается на место удаленного катализатора. Иногда называют каткиллер (catkiller)

Cat-pipe –является сочетанием двух труб- мид-пайпом и даун-пайпом и подводит выхлопные газы к первому катализатору.

Flex-pipe ( от англ. Flex- гибкий)- гибкое соединение труб после выпускного коллектора. Проще говоря, флекс-пайпом является гофра глушителя

Catback (сокр. от англ. Cat-catalyst- катализатор, back-задняя часть)- катбэком называют все компоненты выхлопной системы после второго (или единственного) катализатора. Туда входит-резонатор, глушитель, трубы, гофры.

Turboback ( «турбобэк»)- это группа элементов выхлопной системы, находящаяся после турбины двигателя, то есть: мид-пайп, даун-пайп, катализаторы, гофры, резонатор, пламегаситель/высокотемпературный резонатор/стронгер, глушитель.

Для чего нужен пайп

В зависимости от Ваших целей и потребностей, мастер установит на Ваш автомобиль соответствующий пайп. Как правило, автовладельцы, желая установить пайп, желают такого результата как:

Итоги

Суммируя вышенаписанное, нужно отметить, что установка пайпа (пайпов) является важнейшим этапом в тюнинге выхлопной системы автомобиля. Качественные пайпы дадут прирост к мощности авто и улучшение разгонной динамики. Стоит сказать, что все на пайпы, которые у нас в наличие, имеется гарантийный сертификат. На свои услуги мы, разумеется, тоже даем гарантии от 1 года. Приезжайте к нам на консультацию по адресу: г. Москва, Сокольнический Вал 1, кор. 1!

Источник

027 — исследования: сравнение эффективности X-пайпа, H-пайпа и Z-пайпа

Доброго времени суток, друзья, читатели и клиенты.

Сегодня расскажу вам о результатах проведенных исследований по сравнению эффективности X-пайпа, H-пайпа и Z-пайпа.

X-пайп и прочие его разновидности (H-пайп, Z-пайп) применяются на автомобилях с раздвоенной выхлопной системой. Соединение двух потоков необходимо для создания разряжения в соседнем потоке. Благодаря высокой скорости потока в одной трубе создается пониженное давление, которое утягивает за собой газы из соседней трубы, тем самым создавая разряжение и в ней. Это, в свою очередь, снижает сопротивление газам из соседнего потока, тем самым обеспечивая двигателю более благоприятные условия «дыхания».

Мне всегда было интересно сравнить эфективность различных инженерных изобретений в данной области.
И вот спустя 4 года в бизнесе по производству выпускных систем до этого дошли руки.

Читайте также:  tunable white светильники что это

Итак, буду проводить расчеты 3-х различных вариантов исполнения:
1) X-пайп
2) H-пайп
3) Z-пайп

Все три варианта имеют по 2 трубы диаметром 3 дюйма (76.1 мм).

Мы будем пропускать поток воздуха через вход одной из двух труб, второй вход остается заглушенным. Воздух сможет выходить через оба выхода.

1) определение разряжения в области у входа во вторую трубу
2) определение распределения потока в процентах между двумя выходами

1) Массовый расход воздуха – 400 гр/с, что примерно соответствует мощности 500 л.с.
2) Давление выхлопных газов на входе в трубу – 2 бара
3) Температура гвыхлопных азов на входе в трубу – 620 С*
4) Давление у выходных отверстий – атмосферное, температура – 20 С*
5) Расстояние от начала трубы до конца (по прямой) – около 700 мм.

1) разряжение в области у входа во вторую трубу:
X-пайп — 4.405 кПа
H-пайп — 0.050 кПа
Z-пайп — 4.411 кПа

2) распределение потока между первым и вторым выходами (в процентах):
X-пайп — 60.0 / 40.0
H-пайп — 96.2 / 3.8
Z-пайп — 49.6 / 50.4



Остановлюсь подробнее на каждом варианте.

Для определения оптимального дизайна X-пайпа были проведены исследования более 20 различных вариантов исполнения. Изменениям подвергались взаимный угол двух труб (от 20 до 40 градусов) и сечение отверстия между двумя трубами (срез от 6 до 16мм от внешнего радиуса).

В итоге наибольшее разряжение (4.405 кПа) получилось при взаимном угле 30* и срезании труб на 15.5мм от внешнего радиуса. Худший результат разряжения (2.316 кПа) получился при взаимном угле 20* и срезании труб на 6мм от внешнего радиуса.

Таким образом, для создания максимального разряжения в X-пайпе, состоящем из двух параллельных труб с сонаправленными потоками, необходимо, чтобы существенная часть потока (до 40%) улетала в соседнюю трубу. Т.е. угол схождения не должен быть слишком низким, а отверстие не должно быть слишком малым.

Минусом такого дизайна является то, что на определенных оборотах двигателя потоки из соседних труб будут непременно сталкиваться друг с другом и создавать турбуленцию в области у отверстия X-пайпа.

Для определения оптимального дизайна H-пайпа были проведены исследования 10 различных вариантов исполнения. Изменениям подвергались диаметр (45 — 76.1мм), форма (круглая и овальная) и длина (10 — 80мм) соединительной трубы.

В итоге ни в одном из вариантов не удалось достичь существенного разряжения. Лучший результат получился при минимальной длине соединительной трубы (10мм) — около 0.05 кПа. Большинство же вариантов не показало разряжения совсем.

Таким образом, можно констатировать, что H-пайп не оказывает существенного влияния на эффективность работы выпускной системы. Маловероятно, что он не имеет никаких плюсов, иначе инженеры не применяли бы его на многих автомобилях. Возможно его функция состоит в другом — например в регулировании звука выхлопа. Также не исключаю, что в моих исследованиях упущены важные моменты. Однако при прочих равных, очевидно, что H-пайп не сравним по эффективности со своими аналогами.

Впервые я увидел подобный дизайн у известных ребят из ОАЭ. У них же увидел и название — Z-пайп (лично мне такое название кажется не совсем подходящим, я бы назвал QUAD-пайп). Суть состоит в том, что каждая из труб разделяется на две, одна из которых уходит в сторону другого потока, другая — остается на стороне своего потока. В данном случае мы использовали две трубы 54х1.5мм, которые в сумме дают то же сечение, то и одна труба 76.1х1.5мм.

Z-пайп показал лучший результат разряжения уже на первой итерации — 4.411 кПа. Потоки распределились между двумя выходами в соотношении 50 на 50.

Несмотря на то, что оптимальный дизайн X-пайпа показал практически такой же результат, Z-пайп имеет перед ним существенное преимущество — потоки никогда не сталкиваются друг с другом. При наступлении указанного в случае X-пайпа случая пересечения первого и второго потоков на определенных оборотах двигателя потоки будут двигаться в одном направлении, не создавая тем самым избыточной турбуленции и противодавления.

Минусами Z-пайпа являются трудоемкость производства и большие габариты, из-за чего его невозможно применить на некоторых автомобилях.

Источник

Основы реактивного программирования с использованием RxJS. Часть 2. Операторы и пайпы

В предыдущей статье мы рассмотрели, что такое потоки и с чем их едят. В новой части мы познакомимся с тем, какие методы RxJS предоставляет для создания потоков, что такое операторы, пайпы(pipes) и как с ними работать.

Серия статей «Основы реактивного программирования с использованием RxJS»:

RxJS обладает богатейшим API. В документации описано более ста методов. Чтобы немного познакомиться с ними, мы напишем простое приложение и на практике посмотрим, как выглядит реактивный код. Вы увидите, что одни и те же задачи, которые раньше казались рутинными и требовали написания большого количества кода, имеют элегантное решение, если смотреть на них сквозь призму реактивности. Но прежде чем мы перейдем к практике, рассмотрим, как потоки можно представить графически, и познакомимся с удобными методами для их создания и обработки.

Графическое представление потоков

Чтобы наглядно продемонстрировать, как ведет себя тот или иной поток, я буду использовать принятую в реактивном подходе нотацию. Вспомним наш пример из предыдущей статьи:

Вот как будет выглядеть его графическое представление:

Поток обычно изображается в виде прямой линии. Если поток испускает какое-либо значение, то оно отображается на линии в виде кружка. Прямая черта в отображении — это сигнал завершения потока. Для отображения ошибки используется символ — “×”.

Потоки в одну строчку

В моей практике я редко сталкивался с необходимостью создавать свои экземпляры Observable напрямую. Большинство методов для создания потоков уже есть в RxJS. Чтобы создать поток, испускающий значения 1 и 2, достаточно лишь использовать метод of:

Метод of принимает на вход любое количество аргументов и возвращает готовый экземпляр Observable. После подписки он испустит полученные значения и завершится:

Если вы хотите представить массив в виде потока, то можно воспользоваться методом from. Метод from в качестве аргумента ожидает любой итерируемый объект(массив, строка и т.д.) или promise, и проецирует этот объект на поток. Вот как будет выглядеть поток, полученный из строки:

А вот так можно обернуть promise в поток:

Примечание: часто потоки сравнивают с promise. На самом деле, они имеют всего одну общую черту — push стратегию распространения изменений. В остальном это абсолютно разные сущности. Promise не может выдать несколько значений. Он может только выполнить resolve или reject, т.е. иметь только два состояния. Поток же может передавать несколько значений, и может быть повторно использован.

А помните пример с интервалом из первой статьи? Данный поток представляет собой таймер, который отсчитывает время в секундах с момента подписки.

Вот как в одну строчку можно реализовать то же самое:

И напоследок метод, который позволяет создать поток событий DOM элементов:

В качестве значений этот поток будет получать и испускать объекты события “keyup”.

Пайпы & операторы

Pipe — это метод класса Observable, добавленный в RxJS в версии 5.5. Благодаря ему мы можем строить цепочки операторов для последовательной обработки значений, полученных в потоке. Pipe представляет собой однонаправленный канал, который связывает между собой операторы. Сами операторы являются обычными функциями, описанными в RxJS, которые обрабатывают значения из потока.

Читайте также:  локтевой артрит чем лечить

Например, они могут преобразовать значение и передать его дальше в поток, или могут выполнять роль фильтров и не пропускать какие-либо значения, если они не соответствуют заданному условию.

Посмотрим на операторы в деле. Умножим каждое значение из потока на 2 с помощью оператора map:

Вот как выглядит поток до применения оператора map:

После оператора map:

Давайте воспользуемся оператором filter. Этот оператор работает точно так же, как функция filter в классе Array. Первым аргументом метод принимает функцию, в которой описано какое-либо условие. Если значение из потока удовлетворяет условию, то оно пропускается дальше:

И вот как будет выглядеть вся схема нашего потока:

Пишем приложение

Теперь, когда мы выяснили, что такое пайпы и операторы, можно приступать к практике. Наше приложение будет выполнять одну простую задачу: выводить список открытых репозиториев github по введенному никнейму владельца.

Требований будет немного:

Начнем с html разметки. Опишем input и ul элементы:

Затем в js или ts файле получим ссылки на текущие элементы используя browser API:

Ещё нам понадобится метод, который будет выполнять запрос к github API. Ниже приведен код функции getUsersRepsFromAPI, которая принимает на вход никнейм пользователя и выполняет ajax запрос, используя fetch. Затем возвращает promise, попутно преобразуя успешный ответ в json:

Следом напишем метод, который будет выводить список названий репозиториев:

Приготовления завершены. Настало время посмотреть на RxJS в действии. Нам необходимо слушать событие keyup нашего input’а. Первым делом мы должны понять, что в реактивном подходе мы работаем с потоками. К счастью, в RxJS уже предусмотрен подобный вариант. Вспомните метод fromEvent, который я упоминал выше. Используем его:

Теперь наше событие представлено как поток. Если мы посмотрим, что выводится в консоль, то увидим объект типа KeyboardEvent. Но нам нужно введенное пользователем значение. Вот тут-то нам и пригодится метод pipe и оператор map:

Перейдем к реализации требований. Начнем с того, что будем выполнять запрос, когда введенное значение содержит более двух символов. Для этого воспользуемся оператором filter:

С первым требованием разобрались. Приступим ко второму. Нам необходимо реализовать debounce. В RxJS есть оператор debounceTime. Данный оператор в качестве первого аргумента принимает число миллисекунд, в течение которых значение будет удерживаться, прежде чем пройдет дальше. При этом каждое новое значение будет сбрасывать таймер. Таким образом, на выходе мы получим последнее значение, после ввода которого прошло 700 миллисекунд.

Вот как может выглядеть наш поток без debounceTime:

А вот так будет выглядеть тот же поток, пропущенный через этот оператор:

С debounceTime мы будем реже обращаться к API, за счет чего получим экономию трафика и разгрузим сервер.

В целях дополнительной оптимизации предлагаю использовать еще один оператор — distinctUntilChanged. Данный метод избавит нас от дубликатов. Лучше всего показать его работу на примере:

Добавим данный оператор сразу после оператора debounceTime. Таким образом, мы не будем обращаться к API, если новое значение по какой-то причине совпадает с предыдущим. Подобная ситуация может возникнуть, когда пользователь ввел новые символы, а затем снова стер их. Так как у нас реализована задержка, в поток попадет только последнее значение, ответ на которое у нас уже есть.

Идем на сервер

Уже сейчас мы можем описать логику запроса и обработки ответа. Пока мы умеем только работать с promise. Поэтому опишем еще один оператор map, который будет вызывать метод getUsersRepsFromAPI. В наблюдателе опишем логику обработки нашего promise:

На текущий момент мы реализовали все, что хотели. Но у нашего примера есть один большой недостаток: нет обработки ошибок. Наш наблюдатель получает только promise и понятия не имеет, что что-то могло пойти не так.

Конечно, мы можем навесить catch на promise в методе next, но из-за этого наш код начнет все больше напоминать “callback hell”. Если вдруг нам понадобится выполнить еще один запрос, то сложность кода возрастет.

Примечание: использование promise в коде с RxJS считается антипаттерном. Promise имеет множество недостатков по сравнению с observable. Его нельзя отменить, и нельзя использовать повторно. Если перед вами стоит выбор, то выбирайте observable. То же самое касается метода toPromise класса Observable. Данный метод был реализован в целях совместимости с библиотеками, которые не могут работать с потоками.

Мы можем использовать метод from, чтобы спроецировать promise на поток, но этот способ чреват дополнительными вызовами метода subscribe, и также приведет к разрастанию и усложнению кода.

Решить эту проблему можно с помощью оператора mergeMap:

Теперь нам не нужно писать логику обработки promise. Метод from сделал из promise поток, а оператор mergeMap обработал его. Если promise выполнится успешно, то вызовется метод next, и наш наблюдатель получит готовый объект. Если же произойдет ошибка, то будет вызван метод error, и наш наблюдатель выведет ошибку в console.

Оператор mergeMap немного отличается от тех операторов, с которыми мы работали ранее, он принадлежит к так называемым Higher Order Observables, о которых я расскажу в следующей статье. Но, забегая вперед, скажу, что метод mergeMap сам подписывается на поток.

Обработка ошибок

Если наш поток получит ошибку, то он завершится. И если попытаться после ошибки взаимодействовать с приложением, то никакой реакции мы не получим, так как наш поток завершился.

Тут нам поможет оператор catchError. catchError вызывается только тогда, когда в потоке появляется ошибка. Он позволяет перехватить ее, обработать и вернуть в поток обычное значение, которое не приведет к его завершению.

Мы перехватываем ошибку в catchError и вместо нее возвращаем поток с пустым массивом. Теперь при возникновении ошибки мы очистим список репозиториев. Но затем поток снова завершится.

Все дело в том, что catchError подменяет наш оригинальный поток на новый. И дальше наш наблюдатель слушает только его. Когда поток of испустит пустой массив, будет вызван метод complete.

Чтобы не подменять наш оригинальный поток, вызовем оператор catchError на потоке from внутри оператора mergeMap.

Таким образом, наш оригинальный поток ничего не заметит. Вместо ошибки он получит пустой массив.

Заключение

Мы наконец-то перешли к практике и увидели, для чего нужны пайпы и операторы. Рассмотрели, как можно сократить код, пользуясь богатым API, которое предоставляет нам RxJS. Конечно, наше приложение не закончено, в следующей части мы разберем, как можно в одном потоке обрабатывать другой и как отменять наш http запрос, чтобы еще больше экономить трафик и ресурсы нашего приложения. А чтобы вы могли увидеть разницу, я выложил пример без использования RxJS, посмотреть его можно здесь. По этой ссылке вы найдете полный код текущего приложения. Для генерации схем я пользовался RxJS визуализатором.

Надеюсь, что данная статья помогла вам лучше понять, как устроен RxJS. Желаю вам успехов в изучении!

Источник

Информ портал о технике и не только