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

253
Vistas
JS: extraer una resolución en Promise no obtiene el mismo resultado

Tengo el siguiente bloque de código:

 async done() => { return new Promise((resolve, reject) => { const events = new Map(); events.set('CLOSE_CLICK_EVENT', () => { //other logic resolve(false); }); } }

Estoy tratando de eliminar la "otra lógica" a una función externa. Mi otro enfoque es el siguiente:

enfoque revisado:

 async done() => { return new Promise((resolve, reject) => { const events = new Map(); events.set('CLOSE_CLICK_EVENT', () => { return this._doneCloseButtonHandler(events); }); } } async _doneCloseButtonHandler(events) { //other logic return false; }

Sin embargo, el segundo enfoque no parece comportarse de la misma manera: ¿por qué la Promesa se resuelve de manera diferente? La Promesa no parece resolverse cuando trato de usar el segundo enfoque.

about 4 years ago · Santiago Gelvez
2 Respuestas
Responde la pregunta

0

En el segundo enfoque, nunca está llamando a la función de resolve , por lo que no puede resolverse, debe encadenarlo:

 return this._doneCloseButtonHandler(events).then(resolve, reject);

Editar: según la solicitud de OP, también hay una forma de resolver dentro de la función _doneCloseButtonHandler cuando pasa la resolve como argumento:

 return this._doneCloseButtonHandler(events, resolve) // ... function _doneCloseButtonHandler(event, resolve) { // .... resolve() }
about 4 years ago · Santiago Gelvez Denunciar

0

Para extraer la "otra lógica", primero debe refactorizar su función para

 async done() { const _ = await new Promise((resolve, reject) => { const events = new Map(); events.set('CLOSE_CLICK_EVENT', resolve); // do something with `events` }); // other logic that should happen when the CLOSE_CLICK event occurs return false; }

(el _ corresponde a lo que se pasará a la llamada de resolve ).

Luego puede extraer la otra lógica en una función separada.

about 4 years ago · Santiago Gelvez 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