Являются ли наблюдаемые предпочтительными? - PullRequest
0 голосов
/ 27 августа 2018

Рассмотрим простую ситуацию, когда вам нужно отфильтровать массив. В контексте angular и rxjs мы можем использовать как метод JS filter, так и оператор RxJS filter.

//JS filter
let array = ['1', '2', '3', '4']
let result = array.filter(x => x == '2')[0];

//RXJS filter
const p = from(array);
let result: any;
p.pipe(filter(x => x == '2')).subscribe(x => { result = x; });

Есть ли ситуация, когда один метод предпочтительнее другого? Должен ли я стараться в большинстве случаев иметь дело с наблюдаемыми rxjs, когда это возможно, особенно в контексте угловых внутренних обработок (тряска деревьев и т. Д.)

1 Ответ

0 голосов
/ 27 августа 2018

Как всегда, зависит от того, что вы хотите достичь.

Для очень простого случая (необходим только в одном месте для конкретного компонента) я считаю, что это не имеет большого значения с точки зрения производительности.

Наблюдаемые значения хороши, если иметь дело с , составляющим .

Представьте, что у вас есть служба, которая получает некоторые данные через API (назовем это "DogsAPI")

DogsAPIService:

getAllDogs (): наблюдаемый <> -> получить всех собак

getAllDogs(() => {
    http.get("/dogs/all");
})

getAllDogsWithColor (color: String) -> подписывается на getAllDogs, затем фильтрует список с цветом

getAllDogsWithColor(color: String) = getAllDogs()
    .pipe(
        map(dog => dog),
        filter(dog => dog.color == color)
    )

getAllDogsWithColorAndFirstName (цвет: String, firstName: String) -> подписывается на getAllDogsWithColor () и фильтры по firstName

getAllDogsWithColorAndFirstName(color: String, firstName:String) = getAllDogsWithColor(color)
    .pipe(
        filter(dog => dog.firstName == firstName)
    )

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

Обычно подписка происходит по асинхронному каналу (интеллектуальный компонент пропускает наблюдаемый по каналу " your observable | async ", поэтому подписка происходит прямо перед использованием свойства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...