Javascript 返回Phonegap DB函数中函数外部的变量

Javascript 返回Phonegap DB函数中函数外部的变量,javascript,jquery,html,sqlite,cordova,Javascript,Jquery,Html,Sqlite,Cordova,下面我有一个phonegap db运行的JS脚本。我想在整个函数之外返回最后一个字符串变量“feed”。这只返回“未定义”。请帮助我进行必要的更改以返回“feeds”变量` function getProviders() { var feeds = ""; var db = window.openDatabase("db", "1.0", "desc", 1000000); db.transaction(function(tx) { var db = w

下面我有一个phonegap db运行的JS脚本。我想在整个函数之外返回最后一个字符串变量“feed”。这只返回“未定义”。请帮助我进行必要的更改以返回“feeds”变量`

function getProviders() {
    var feeds = "";
    var db = window.openDatabase("db", "1.0", "desc", 1000000);

    db.transaction(function(tx) {
        var db = window.openDatabase("db", "1.0", "desc", 1000000);
        tx.executeSql("SELECT * FROM `feed_provider`", [], function(tx, results) {
            var len = results.rows.length;

            for (var i = 0; i < len; i++) {
                feeds += results.rows.item(i).id + "|" + results.rows.item(i).name + "|" + results.rows.item(i).status + "|" + results.rows.item(i).feed_url + ",";
            }
        }, sqlerror);
    }, sqlerror2);
    return feeds;
}
函数getProviders(){ var=”; var db=window.openDatabase(“db”,“1.0”,“desc”,1000000); 数据库事务(功能(tx){ var db=window.openDatabase(“db”,“1.0”,“desc”,1000000); tx.executeSql(“从`提要\提供程序`中选择*”,[],函数(tx,结果){ var len=results.rows.length; 对于(变量i=0;i我将假设
db.transaction
tx.executeSql
是异步的,在这种情况下,我将使用一个
延迟的

function getProviders() {
    var feeds = "";
    var def = $.Deferred();
    var db = window.openDatabase("db", "1.0", "desc", 1000000);

    db.transaction(function(tx) {
        var db = window.openDatabase("db", "1.0", "desc", 1000000);
        tx.executeSql("SELECT * FROM `feed_provider`", [], function(tx, results) {
            var len = results.rows.length;

            for (var i = 0; i < len; i++) {
                feeds += results.rows.item(i).id + "|" + results.rows.item(i).name + "|" + results.rows.item(i).status + "|" + results.rows.item(i).feed_url + ",";
            }
            def.resolve(feeds);
        }, sqlerror);
    }, sqlerror2);
    return def.promise();
}

我将假定
db.transaction
tx.executeSql
是异步的,在这种情况下,我将使用
延迟的

function getProviders() {
    var feeds = "";
    var def = $.Deferred();
    var db = window.openDatabase("db", "1.0", "desc", 1000000);

    db.transaction(function(tx) {
        var db = window.openDatabase("db", "1.0", "desc", 1000000);
        tx.executeSql("SELECT * FROM `feed_provider`", [], function(tx, results) {
            var len = results.rows.length;

            for (var i = 0; i < len; i++) {
                feeds += results.rows.item(i).id + "|" + results.rows.item(i).name + "|" + results.rows.item(i).status + "|" + results.rows.item(i).feed_url + ",";
            }
            def.resolve(feeds);
        }, sqlerror);
    }, sqlerror2);
    return def.promise();
}

我已经试过了,现在它返回一个对象,当发出警报时显示[object object]。如何通过此对象使用“feeds”变量中的字符串?我想提醒feeds变量中的字符串值。我该怎么做呢?我已经试过了,现在它返回一个对象,在发出警报时显示[object object]。如何通过此对象使用“feeds”变量中的字符串?我想提醒feeds变量中的字符串值。我该怎么做?@techytree:你不使用回调有什么原因吗?@karchow:我不知道怎么使用回调。@techytree:你不使用回调有什么原因吗?@karchow:我不知道怎么使用回调。