【问题标题】:Return a variable outside a function in Phonegap DB function在Phonegap DB函数中返回函数外的变量
【发布时间】:2013-10-09 10:44:04
【问题描述】:

我在下面有一个 phonegap db 运行的 JS 脚本。我想在整个函数之外返回最终的字符串变量“feeds”。这只返回“未定义”。请帮助我进行必要的更改以返回“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;
}

【问题讨论】:

  • @techytree:你有什么理由不使用回调?
  • @karthick:我不太了解如何使用回调。

标签: javascript jquery html sqlite cordova


【解决方案1】:

我将假设db.transactiontx.executeSql 是异步的,在这种情况下我会使用deferred

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();
}

这样称呼它:

getProviders().done(function(feeds) { 
    // do something with feeds
});

【讨论】:

  • 我已经尝试过了,现在它返回一个对象,在收到警报时会显示 [object Object]。如何通过此对象使用“feeds”变量中的字符串?认为我想提醒 feeds 变量中的字符串值。我该怎么做?
猜你喜欢
  • 1970-01-01
  • 2013-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-21
  • 1970-01-01
  • 2016-02-02
  • 1970-01-01
相关资源
最近更新 更多