我无法将JavaScript Promise集成到Web SQL事务中。我可以获取“测试”日志,但是无法获取“查询结果”日志。请帮助我,我是Java语言的新手。任何帮助真的表示赞赏。下面是我的代码。

function sample()
{
    return executeTransaction()
   .then(function(results)
    {
       console.log("Query Results:");
    });
}

function executeTransaction(query)
{
    console.log("Transaction Query : " + query);

    db.transaction(function(transaction)
    {
        transaction.executeSql(query, [], function(transaction, result)
        {
            console.log("Test: " + JSON.stringify(result));
            return Promise.resolve(result);

        }
        , nullHandler
        , errorHandler);
    });


}

function nullHandler(result)
{
    console.log("Null Log : " + JSON.stringfy(result));

}

function errorHandler(error)
{
    console.log("Error Log : " + error);
}

最佳答案

您的executeTransaction函数不返回任何内容(更不用说保证了)-匿名函数function(transaction)也不返回

乍一看,并且在不了解您正在使用的数据库库的情况下,您需要这样做(至少):

function executeTransaction(query) {
    console.log("Transaction Query : " + query);
    return new Promise(function (resolve, reject) {
        db.transaction(function (transaction) {
            transaction.executeSql(query, [], function (transaction, result) {
                console.log("Test: " + JSON.stringify(result));
                resolve(result); // here the returned Promise is resolved
            }, nullHandler, errorHandler);
        });
    });
}

07-26 05:47