嘿,我刚刚使用HTML5数据库API搞错了,而且我无法从函数中返回结果。这就是我所拥有的。
var list = GetScenarios();
GetScenarios: function()
{
var scenarios;
// get all the scenarios
conn.transaction(function(_t) {
_t.executeSql('SELECT * FROM scenarios', [], function(_tr, _result) {
scenarios = _result.rows;
});
});
return scenarios;
}
我设法从数据库中获取行,但行不会分配给变量方案。我知道它是一个范围的东西,但我想不出如何从GetScenatios函数返回结果。
当我记录_result.rows时,我有数据,但场景总是未定义的;
有什么想法吗?
以下是我的js文件的设置方式。
window.MyExtension = (function()
{
return ({
OtherMethod: function() {
var list = window.MyExtension.GetScenarios();
},
GetScenarios: function() {
...see above
}
}());
答案 0 :(得分:1)
看起来您正在尝试从异步请求返回代码,就好像它是同步的一样。您需要向GetScenarios()
添加回调参数:
function GetScenarios(callback) {
conn.transaction(function(_t) {
_t.executeSql('...', [], function(_tr, _result) {
callback(_result.rows);
});
});
}
更改您的主叫代码:
var list = GetScenarios();
// do something with list
To,this:
GetScenarios(function (list) {
// do something with list
});