gpt4 book ai didi

javascript - 如何将 websql .executeSql 结果存储在全局变量中?

转载 作者:行者123 更新时间:2023-11-29 17:18:35 25 4
gpt4 key购买 nike

如何访问结果

tx.executeSql('select query for a table',[],sucessCB);
function sucessCB(tx, results){ //<--- this results param
console.log(results.row.item(0).name);
}

我试过类似的东西

function(){
var tab = [];
tx.executeSql('select query for a table',[],sucessCB);

function sucessCB(tx, results){ //<--- this results param
console.log(results.row.item(0).name);
for(i=0;i<results.length;i++){
tab.push(results.row.item(i))
}
}

console.log(tab); //<--- this returns always null
}

如何在回调函数之外访问变量,或者有没有办法将 sql 结果直接存储在变量中。有没有办法在

中再次将变量发送到回调函数
tx.executeSql('another select query',[],function(tx, results, tab ){  // <-- this inside sucessCB
console.log(tab);
});

在所有场景中,变量都是空的。有没有另一种方法可以做到这一点。任何建议都会有所帮助,谢谢。

最佳答案

你使用回调如下:

var querySql = function(sql, callback) {

tx.executeSql(sql,[],sucessCB);

function sucessCB(tx, results){ //<--- this results param
var tab = [];
for(i=0;i<results.length;i++){
tab.push(results.row.item(i))
}
callback(tab);
}
}

querySql('select query for a table', function(result) {
console.log(result);
}

然而,使用Deferred concept 可以更好地解决此类问题。 .

var querySql = function(sql) {
var df = $.Deferred();
tx.executeSql(sql,[],sucessCB, errCB);

function sucessCB(tx, results){ //<--- this results param
var tab = [];
for(i=0;i<results.length;i++){
tab.push(results.row.item(i))
}
df.resolve(tab);
}
function errCB(tx, e) {
df.reject(e);
}
}

querySql('select query for a table').done(function(result) {
console.log(result);
}

关于javascript - 如何将 websql .executeSql 结果存储在全局变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14581912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com