Estoy tratando de concertar una función de devolución de llamada para soportar funciones encadenadas, pero no pude administrarlo,
la función de devolución de llamada es:
db.transaction( function(t){ t.executeSql("SELECT * FROM cal_list where calories > ?" ,[min_cal_amount], function(t,r){ for (var i=0; i < r.rows.length; i++){ food = r.rows.item(i).food; amount_of_calories = r.rows.item(i).amount_of_calories; serving_size = r.rows.item(i).serving_size; list.innerHTML +="<li>"+food+" has "+amount_of_calories+" KCAL worth of calories.</li>"; } }, function(t,e){alert(e.message);}) } ); ¿Cómo puedo convertir a async..await ... esperar o intentar... entonces... try..then..catch ?
Si su biblioteca de base de datos expone db.transaction y t.executeSQL en una API basada en promesas, se vería más o menos así:
async function getResults() { const transaction = await db.transaction(); try { const result = await transaction.executSql( 'SELECT * FROM cal_list where calories > ?', [min_cal_amount] ); for (var i = 0; i < result.rows.length; i++) { // work with result data } } catch (e) { // rollback transaction, handle error as appropriate } } Si su biblioteca no expone esas funciones en una API basada en promesas, puede usar util.promisify para ajustar esas funciones que esperan una devolución de llamada y luego usar el fragmento anterior.