Considere este código (abreviado)Devolución de valores de funciones anidadas en Javascript
function getSecret() {
db.transaction(
function (transaction) {
transaction.executeSql(
'SELECT * FROM table LIMIT 1;',
null,
function(transaction, result) {
var row = result.rows.item(0);
var secret = row.secret;
return secret;
}, errorHandler
);
}
)
}
¿Cómo voy a devolver el valor de secreto para la función principal? He leído esta respuesta Return value from nested function in Javascript
y probado este
function getSecret() {
db.transaction(
function doSql(transaction) {
transaction.executeSql(
'SELECT * FROM table LIMIT 1;',
null,
function(transaction, result) {
var row = result.rows.item(0);
var secret = row.secret;
return secret;
}, errorHandler
);
}
)
return doSql;
}
Sin embargo, esto no funcionó.
Gracias!
¿La operación de la base de datos no es asincrónica? Estoy bastante seguro de que así es, y que, por lo tanto, la solución aquí no puede funcionar. La función de devolución de llamada de "éxito" se llama cuando la consulta finaliza, mientras que la función externa regresa inmediatamente después de que la consulta se * inició *. – Pointy
cómo hacer que esto funcione cuando es asincrónico? – Madhusudhan
¿Alguna vez se ha respondido a este problema 'asincrónico'? – Black