javascript - 在 Javascript 中访问嵌套函数

标签 javascript function

我有以下代码:

function getRetailerName(retailerID) {
    var retailerName;
    db.transaction(function retName(qry) {
        qry.executeSql("SELECT retailerName FROM retailers WHERE token = '" + retailerID + "' ", [], function (tx, results1) {
            var len1 = results1.rows.length;
            var retailerName;
            for (var i1 = 0; i1 < len1; i1++) {
                retailerName = results1.rows.item(i1).retailerName;
                //alert(results1.rows.item(i1).retailerName);
            }
        });
        return retailerName;
    });
    alert(retName());
}

我正在尝试从内部函数 retName() 获取值并最终调用 getRetailerName() 从数据库中获取值,但是它一直给我retName 未定义的错误?

我在这里尝试了很多,

最佳答案

你不能那样做,因为它是异步的。当您从函数返回时,查询尚未完成。相反,传递要执行的回调:

function getRetailerName(retailerID, callback) {
    var retailerName;
    db.transaction(function retName(qry) {
        qry.executeSql("SELECT retailerName FROM retailers WHERE token = '" + retailerID + "' ", [], function (tx, results1) {
            var len1 = results1.rows.length;
            var retailerName;
            for (var i1 = 0; i1 < len1; i1++) {
                retailerName = results1.rows.item(i1).retailerName;
                callback(retailerName);
            }
        });
    });
}

getRetailerName(1, function(name) {
    alert(name);
});

关于javascript - 在 Javascript 中访问嵌套函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15110939/

相关文章:

php - 在 jQuery 脚本中使用 PHP 可以吗?

JavaScript 将参数传递给保持参数数据完整的函数

javascript - Laravel + jquery ajax 找不到文件的地址

javascript - javascript RegExp : same regular expressions produce different result 的奇怪行为

Javascript:如何在不创建循环依赖的情况下重用创建子实例的方法

javascript - 从 Meteor 中的父访问子模板助手/变量

Javascript,if 输入类型范围条件

C++结构对象调用一个函数

javascript - HTML DOM 选择器更新后的 jQuery 调用

c - 用 C 编写一个可以接受任意数量参数的函数