在Javascript中访问嵌套函数
Accessing nested functions in Javascript
我有以下代码:
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);
});
你不能(因为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;
for (var i1 = 0; i1 < len1; i1++) {;
callback(results1.rows.item(i1).retailerName);
}
});
});
}
getRetailerName(1, alert.bind(window));
相关文章:
- 用嵌套函数和默认函数定义函数
- d3中堆栈函数和嵌套函数之间的差异
- JavaScript 中的嵌套函数和 “this” 关键字
- Javascript中带有返回值的嵌套函数
- 访问嵌套函数结构中的JavaScript父函数变量
- 从嵌套函数访问函数属性
- 如何在javascript中使用嵌套函数作为生成器(使用“inner”yields)
- Javascript嵌套函数属性继承
- 我对“;返回true"嵌套函数内部;t工作
- JS中的嵌套函数
- 如何在嵌套函数中获取$(this)
- Jasmine中返回Deferred的模拟嵌套函数
- 如何在嵌套函数jquery上保持变量的值不变
- JavaScript中的深度嵌套函数
- Jquery从嵌套函数返回
- 使用'这'在类中的嵌套函数中
- 如何从上面的嵌套函数返回
- 从JavaScript中的嵌套函数返回值
- Javascript OOP-从函数返回一个值;s在对象内部's方法(嵌套函数)
- Javascript对象/名称空间-如何访问从嵌套函数添加的属性(包括示例)