observables - ¿Por qué deberíamos usar subscribe() sobre map() en Angular?
observables angular 6 (4)
Necesita subscribe
para ejecutar su solicitud asincrónica. Si acaba de establecer el map
, no se generarán solicitudes. Puedes comprobar.
Se recomienda utilizar el map
para preprocesar sus datos porque muchos suscriptores pueden comparar sus resultados. Por lo tanto, en lugar de agregar preprocesamiento a cada cliente (suscriptor), puede preparar una sola salida con un esquema de datos único para todos.
Estoy tratando de aprovechar los observables en angular2 y me confundí sobre por qué debería usar map () sobre subscribe (). Supongamos que obtengo valores de un webApi, como este
this.http.get(''http://172.17.40.41:8089/api/Master/GetAllCountry'')
Ahora, al utilizar subscribe(success, error, complete)
puedo obtener todos los valores en la devolución de llamada exitosa y puedo devolver los valores en la devolución de llamada completa. Si puedo hacer todas estas funcionalidades, ¿cuál es la necesidad de map()
? ¿Le da alguna ventaja?
En resumen, ¿por qué uno debería escribir así ?
this.http.get(''http://172.17.40.41:8089/api/Master/GetAllCountry'')
.map(r=>{})
.subscribe(value => {
}, error => error, () => {
});
cuando simplemente pueden escribir esto sin la función de mapa:
this.http.get(''http://172.17.40.41:8089/api/Master/GetAllCountry'')
.subscribe(value => {
}, error => error, () => {
});
Piense en el mapa como un middleware que transforma la respuesta.
this.http.get(''http://172.17.40.41:8089/api/Master/GetAllCountry'')
.map(r=>r.json())
.subscribe(result => {
// here result would have json object that was parsed by map handler...
},failurCallback,completeCallback)
subscribe se usa para invocar el observable, por favor lea un buen documento sobre cold-vs-hot-observables
Si desea devolver un Observable
puede suscribir otro código, pero aún desea manipular los eventos de datos en el método actual, use el map
.
El usuario real de lo observable necesita subscribe()
, porque sin subscribe()
el observable no se ejecutará en absoluto. ( forEach()
o toArray()
y probablemente otros también funcionen para ejecutar el observable en lugar de subscribe()
)
subscribe()
devuelve una Subscription
que no se puede suscribir, pero se puede utilizar para cancelar la suscripción.
map()
devuelve un Observable
que se puede suscribir.
.map()
es un operador de rxjs, mostrará el resultado en forma de matriz []
ya sea .json()