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

84
Vistas
Convertir una función de devolución de llamada en una promesa

Estoy tratando de convertir este código en promesa (el que comenté //). Mi objetivo es imprimir la ubicación del usuario (longitud y latitud), pero me está costando mucho averiguar cómo convertir esto en Promise. (Lo siento por mi ingles)

 // const getUserLocation = () => { // if (navigator.geolocation) { // navigator.geolocation.getCurrentPosition(succes, error); // } else { // console.log('Your browser does not support geolocation'); // } // } // const succes = (positon) => { // console.log(positon.coords.latitude) // console.log(positon.coords.longitude) // } // const error = (err) => { // console.log('The User have denied the request for Geolocation.'); // } // getUserLocation(); const getUserLocation = () => { return new Promise((resolve, reject) => { if (navigator.geolocation) { resolve(navigator.geolocation.getCurrentPosition); } else { reject('The User have denied the request for Geolocation.'); } }) } getUserLocation() .then((response) => { console.log(response.coords.longitude); console.log(response.coords.latitude); }) .catch((err) => { console.log(err); })
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Estás muy cerca, la variante de promesa debería verse así:

 const getUserLocation = () => { return new Promise((resolve, reject) => { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(resolve, reject); } else { reject('The User have denied the request for Geolocation.'); } }) }

En el código anterior, pasa las funciones de resolve y reject a getCurrentPosition() , que las llama con la posición de geolocalización o un error (en el caso de reject ) como único argumento.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Simplemente pasaría resolve y reject de la función Promise a la función getCurrentPosition .

 const getUserLocation = () => { return new Promise((resolve, reject) => { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(resolve, reject) } else { reject('The User have denied the request for Geolocation.'); } }) } getUserLocation() .then((response) => { console.log('success:', response.coords.longitude, response.coords.latitude); }) .catch((err) => { console.log('error:', err); })

about 4 years ago · Juan Pablo Isaza Denunciar

0

No. Esa no es la forma de hacerlo. No hay nada especial en las promesas. No es una nueva sintaxis añadida al lenguaje. Es solo un constructor/clase ordinario que puede escribir usted mismo en javascript puro. Por lo tanto, no hay nada especial que resolve() pueda hacer para convertir las devoluciones de llamada en promesas.

La forma correcta es pasar el value pasado a la devolución de llamada a la función resolve() :

 // To avoid confusion I rename the resolve() and reject() function to // AAA and BBB. This is to illustrate that they are just variables // **you** declare and do not have any special syntax. This is also // to avoid confusion with the Promise.resolve() static method. const getUserLocation = () => { return new Promise((AAA, BBB) => { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(succes, error); } else { console.log('Your browser does not support geolocation'); BBB(new Error('Your browser does not support geolocation')); // optional } const succes = (positon) => { console.log(positon.coords.latitude) console.log(positon.coords.longitude) AAA(position); // This is how you correctly resolve() } const error = (err) => { console.log('The User have denied the request for Geolocation.'); BBB(err); // This is how you correctly reject() } }); }

Básicamente, debe copiar sus funciones de éxito () y error () en el alcance de su función getUserLocation() y luego DEBE resolver o rechazar dentro de esas funciones.

about 4 years ago · Juan Pablo Isaza 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