Javascript数据库API返回结果

时间:2011-11-10 01:19:47

标签: javascript html5

嘿,我刚刚使用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

    }

}());

1 个答案:

答案 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
});