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

102
Vistas
Valor incorrecto después de llamar a la función asíncrona de promesa en js

Estoy tratando de hacer una función que verifique cuántos registros hay en la base de datos y envíe el número a la variable:

 var records = -1; async function howManyRecords() { let myPromise = new Promise(function (resolve) { DB.transaction(function (tx) { tx.executeSql('SELECT count(*) AS mycount FROM DemoTable', [], function (tx, rs) { records = rs.rows.item(0).mycount; resolve(); },); }); }); await myPromise; console.log("records from promise function: " + records); return myPromise; }

Luego, me gustaría usar el número en otras funciones, por ejemplo, mostrar en el registro de la consola cuando el dispositivo esté listo:

 onDeviceReady.then(function () { howManyRecords(); console.log("after calling function records are: " + records); }

La función howManyRecords cuenta los registros correctamente, pero luego los registros variables no son correctos:

IMG: después de llamar a la función, los registros son: -1 // registros de la función de promesa: 5

Realmente necesito ayuda, soy nuevo en el tema y estoy atrapado aquí desde hace mucho tiempo y no puedo continuar. Estoy usando cordova sqlite.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Prueba esto:

 onDeviceReady.then(async function () { await howManyRecords(); console.log("after calling function records are: " + records);}
about 4 years ago · Juan Pablo Isaza Denunciar

0

Este problema no es para su comportamiento asincrónico. Aquí, en realidad, vuelve a asignar el valor de la variable de registros en la función. Es por eso que el valor de los registros cambia. Si desea deshacerse del problema, puede tomar otra variable en la función para contar registros. E inicializa la variable con let. Como let es el alcance del bloque, es por eso que su valor no pasará por la función.

 var records = -1; async function howManyRecords() { let records = -1; let myPromise = new Promise(function (resolve) { DB.transaction(function (tx) { tx.executeSql('SELECT count(*) AS mycount FROM DemoTable', [], function (tx, rs) { records = rs.rows.item(0).mycount; resolve(); },); }); }); await myPromise; console.log("records from promise function: " + records); return myPromise; }

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