我无法将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);
});
});
}