Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

104
Vistas
Promete y suscríbete

Tengo una aplicación Angular2 (ionic2). Tengo una función que solicita ciudades, pero aparece el error de que Property subscribe no existe en this.cityService.getAllCities() .

cityPage.ts tiene una función como esta:

 getCities(){ this.cityService.getAllCities() .subscribe(cityData => { this.cityList = cityData; }, err => console.log(err), () => console.log('Complete!') ); }

mi función cityService.getAllCities() se ve así:

 getAllCities(){ return new Promise (resolve => { this.storage.ready().then(() => { this.storage.get('authData').then(authData => { let hdr = new Headers({'Content-Type': 'application/json', 'Authorization': 'Bearer ' + authData.access_token }); let opt = new RequestOptions({ headers: hdr }); return this.http.get(AppSettings.API_GET_CITIES).map(res => <CityModel[]> res.json(), opt); }).catch(() => { //resolve(false); }); }); }); }

Editar

Según el comentario, he cambiado mi función de esta manera:

 getAllCities(){ return Observable.create(resolve => { this.storage.ready().then(() => { this.storage.get('authData').then(authData => { let hdr = new Headers({'Content-Type': 'application/json', 'Authorization': 'Bearer ' + authData.access_token }); console.log('access_token ' + authData.access_token); let opt = new RequestOptions({ headers: hdr }); return this.http.get(AppSettings.API_GET_CITIES,opt).map(res => <CityModel[]> res.json()).subscribe((result) => { console.log(result); resolve = result; }); }).catch(() => { //resolve(false); }); }); }); }

En mi console.log(result) recibo datos, pero los datos nunca se devuelven a mi función getCities() . Además, no se llama a console.log('Complete!') .

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

La razón por la que arroja un error, porque el método .subscribe está disponible en Observable para escuchar, cada vez que emite datos. Aquí, desde el método getAllCities , está devolviendo una promise que podría aplicar .then , funcione sobre ella para obtener los datos devueltos de esa Promise .

 getCities() { this.cityService.getAllCities() .then( cityData => { this.cityList = cityData; }, err => console.log(err), () => console.log('Complete!') ); }

Y también devolver la promesa del método getAllCities llamando al método .toPromise() sobre http.get() Observable.

 getAllCities(){ return new Promise (resolve => { this.storage.ready().then(() => { this.storage.get('authData').then(authData => { let hdr = new Headers({'Content-Type': 'application/json', 'Authorization': 'Bearer ' + authData.access_token }); let opt = new RequestOptions({ headers: hdr }); //returned promise from here. return this.http.get(AppSettings.API_GET_CITIES) .map(res => <CityModel[]> res.json(), opt) .toPromise(); }).catch(() => { //resolve(false); }); }); }); }
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda