У меня есть obeservables этих объектов:Угловые 2 Rxjs: Нанести отличие от объектов
{
id : "f3055770-6e66-4936-8e9a-732b53121549"
message:"Empty Notification for test ......"
navigationLink:"/fusion/home"
seen:false
sendedOn:"2016-12-02T15:19:44.856Z"
userId :null
}
Я хотел бы, чтобы не получить дублированный объект (на основе идентификаторов), и я использую этот метод для достижения его
notify(userID: string) {
return Observable.interval(5000)
.map(() => this.baseUrl + '/notification/GetUnseen?userId=' + userID)
.switchMap(url => {
return Observable.from(this.datatService.get(url));
})
.flatMap(response => Observable.from(response.json().slice()))
}
Когда я добавляю отдельный (x => x.id) в качестве последнего оператора, у меня есть только один объект вместо четвертой помощи?
UPDATE:
Я называю этот метод в OnInit() жизненного цикла моего компонента, так что способ выполнения каждые 5 секунд, чтобы получить уведомление, я использую окрености таким образом:
notify(userID: string) {
return Observable.interval(5000)
.map(() => this.baseUrl + '/notification/GetUnseen?userId=' + userID)
.switchMap(url => {
return Observable.from(this.datatService.get(url));
})
.flatMap(response => Observable.from(response.json().slice()))
.distinct(x => x.id);
}
ОБНОВЛЕНИЕ 2
Serveur сырья ответ:
"[{"userId":null,"sendedOn":"2016-12-02T15:19:44.856Z","message":"Empty Notification for test ......","navigationLink":"/fusion/home","seen":false,"id":"f3055770-6e66-4936-8e9a-732b53121549"},{"userId":null,"sendedOn":"2016-12-02T15:19:45.146Z","message":"Empty Notification for test ......","navigationLink":"/fusion/home","seen":false,"id":"ce172122-11d9-4054-a3e4-594c8c910a7d"},{"userId":null,"sendedOn":"2016-12-02T15:19:45.146Z","message":"Empty Notification for test ......","navigationLink":"/fusion/home","seen":false,"id":"66e32c45-f544-4ce6-901c-e5ac64904954"},{"userId":null,"sendedOn":"2016-12-02T15:19:45.147Z","message":"Empty Notification for test ......","navigationLink":"/fusion/home","seen":false,"id":"4c2322cb-526c-490e-8a86-f1e9ced1c34f"}]"
Не могли бы вы дать контекст: 1) Как вы называете этот метод? 2) Где вы добавляете оператор 'distinct'? – Meir
Вы уверены, что у этих четырех объектов нет одинакового 'id'? – martin
Обновлено, @martin Да, я знаю, что идентификаторы не совпадают. –