从Javascript中的嵌套函数返回值

Pet*_*ete 6 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
            );
        }
    )
}
Run Code Online (Sandbox Code Playgroud)

如何将secret的值返回给main函数?我已经从Javascript中的嵌套函数中读取了这个答案的返回值

并试过这个

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;
}
Run Code Online (Sandbox Code Playgroud)

但是这没用.

谢谢!

Sar*_*raz 4

尝试:

function getSecret() {
    var secret = '';

    db.transaction(
        function (transaction) {
            transaction.executeSql(
                'SELECT * FROM table LIMIT 1;',
                null,
                function(transaction, result) {
                    var row = result.rows.item(0);
                    secret = row.secret;
                }, errorHandler
            );
        }
    )

  return secret;
}
Run Code Online (Sandbox Code Playgroud)

  • 数据库操作不是异步的吗?我很确定确实如此,因此这里的解决方案不可能起作用。查询完成时调用“成功”回调函数,而外部函数将在查询“开始”后立即返回。 (19认同)