Agradecemos tu apoyo para compartir nuestras crónicas en referencia a las ciencias informáticas.
Solución:
Puedes hacer el procesamiento en tu código de GetData, dentro del map
:
// For RxJS v5
this.http
.get('http://server.name/api/GetData')
.map(result =>
const items = result.json(); // could be SomeItem[] instead of any[]
items.forEach(item => item.ID = ...);
return items;
);
// For RxJS v6
this.http
.get('http://server.name/api/GetData')
.pipe(map(result =>
const items = result.json(); // could be SomeItem[] instead of any[]
items.forEach(item => item.ID = ...);
return items;
));
Luego, cuando reciba el objeto en su suscripción, los elementos deben tener las identificaciones asignadas.
Aquí está la referencia a la documentación de RxJs Observable: http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-map
la idea es:
- obtener el resultado
- asigne el resultado para obtener solo el json
- como tu json es un arrayproduzca un Observable para cada dato, luego cambie su identificación y envíe los datos de vuelta
- reunirlos de nuevo en un array
el operador mergeMap (reemplazado flatMap en rxjs 5.5+) se usa porque un operador Observable siempre devuelve un Observable, pero dado que creamos un Observable dentro del resultado mismo, produce un Observable>, mergeMap elimina una capa Observable. Espero que esto ayude
GetData():Observable
let data = this.http.get('http://server.name/api/GetData')
.map(res => res.json())
.mergeMap(dataArr =>
Observable.from(dataArr)
.map(data =>
data.ID = newID();
return data;
)
.toArray()
);
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)