Rx JS реализует парадигму реактивного программирования на основе концепции НАБЛЮДЕНИЙ.
Если вы уже знаете Обещания javascript, наблюдаемые имеют некоторые незначительные различия :
- Обещание нетерпеливо, тогда как Observable лениво;
- Обещание всегда асинхронно, в то время как Observable может быть либо синхронным, либо асинхронным;
- Обещание может предоставить одно значение, тогда как Observable - это поток значений (от 0 до нескольких значений);
Сказав это, Rx JS библиотеки предоставляют множество функций с именем Операторы создания , которые могут использоваться для создания новых НАБЛЮДЕНИЙ, начиная с очень распространенного поведения JS, например AJAX вызовов (асинхронный * 1040) * и xml)
import { ajax } from 'rxjs/ajax';
// Create an Observable that will create an AJAX request
const apiData = ajax('/api/data');
Для этого вида операторов мы можем применять Pipeable Operators . Разница между ними заключается в том, что они должны применяться к существующему оператору, создавая новый.
Представляя объединение серии этих конвейерных операторов, код будет записан в виде:
pipeableOperator3(pipeableOperator2(pipeableOperator(creatorOperator())))
По этой причине в Observables есть метод .pipe (), который выполняет то же самое, но гораздо легче читать:
creatorOperator().pipe(
pipeableOperator1(),
pipeableOperator2(),
pipeableOperator3());