Say мы получаем массив категории как JSON:Должен ли я «думать» обо всех моих данных как потоках при работе с Observables?
[ {id: "111", name: "cat1"}, {id: "222", name: "cat2"}, {id: "333", name: "cat3"} ]
метод получает его:
getCategories(): Observable<Array<Category>> {
return this.http.get('/categories').map(data => data.json());
}
Мы также имеем:
getCategoryById(id): Observable<Category> {
return this.getCategories()
.map(categories => categories.find(c => c.id === id));
}
Это работает, но мне интересно, если Я использую наблюдаемые правильно.
Должен ли я считать свои категории потоком вместо атомной группы данных?
Код будет:
getCategoriesAsStream(): Observable<Category> {
return this.http.get('/categories')
.map(data => data.json())
.flatMap(categories => Observable.from(categories));
}
getCategoryById(id): Observable<Category> {
return this.getCategoriesAsStream()
.find(category => category.id === id);
}
Поскольку наблюдаемые/RxProgramming, кажется, новый способ мышления асинхронных операций, я чувствую, что я должен думать, как все потоки. Но я также опасаюсь некоторых подводных камней, которых я не видел сейчас.
Вы знаете, что бы это было? Считаете ли вы, что это слишком сложно переосмыслить мои данные таким образом?
https://s3.amazonaws.com/media-p.slid.es/uploads/263775/images/1763829/687474703a2f2f692e696d6775722e636f6d2f4149696d5138432e6a7067.jpeg – olivarra1
Дела в том, что это действительно зависит от случая .. Там нет действительного ответа на этот вопрос, я думаю ... Обычно, если у меня есть определенный набор категорий, я бы определил их поток как «группу объектов», и каждое новое уведомление в потоке было бы изменением во всем наборе. Но в других случаях имеет смысл поддерживать поток как отдельные объекты, такие как события, уведомления и т. Д. – olivarra1