2016-02-22 2 views
0

Я начинаю с rxjs в angular2. многие из примеров, которые я видел, используют простые объекты при сопоставлении ответа HTTP с наблюдаемым.Как нарисовать глубоко вложенный объект в Rxjs

this.http.get('/app/shared/data/raw-tasks.json') 
     .map(response => response.json()) 
     .map(stream => stream.map(res => new TaskModel(res.name, res.deadline, res.timeRequired))) 

но как мне сопоставить более сложный ответ, например вложенные объекты и вложенные массивы?

ответ

5

Как только вы получите ответ от json, вы можете сделать с ним все, что захотите. Просто добавьте еще одну функцию карты и разобрать его где-нибудь еще (убедитесь, что вы вернетесь разобранное значение):

this.http.get('/app/shared/data/raw-tasks.json') 
    .map(response => response.json()) 
    .map(stream => complicatedParser(stream)) 

// somewhere in your code... 
complicatedPatser(stream) { 
    return stream 
     .map(x => x) 
     .filter(x => true) 
     .reduce(....) 
} 

Наблюдаемые не волнует, что они излучают, поэтому есть небольшая разница между простой строкой или сложными вложенными объектами. Если вы знаете, как обращаться с основными типами, object и/или array ответ, вы знаете почти все (;

Смежные вопросы