Considérez ce code (raccourci)De retour des valeurs de fonctions imbriquées 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
);
}
)
}
Comment pourrais-je retourner la valeur de secret pour la fonction principale? J'ai lu cette réponse Return value from nested function in Javascript
Et essayé
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;
}
Cependant, cela n'a pas fonctionné.
Merci!
L'opération de base de données n'est-elle pas asynchrone? Je suis à peu près sûr que c'est le cas et que, par conséquent, la solution ici ne peut pas fonctionner. La fonction de rappel "success" est appelée lorsque la requête est terminée, tandis que la fonction externe retourne immédiatement après le démarrage de la requête *. – Pointy
comment faire ce travail quand il est asynchrone? – Madhusudhan
Avez-vous déjà répondu à ce problème «asynchrone»? – Black