gpt4 book ai didi

javascript - 从匿名函数层内访问方法变量

转载 作者:行者123 更新时间:2023-11-28 06:24:38 25 4
gpt4 key购买 nike

我试图返回一个通过几个回调函数检索到的数字,但我一生都无法弄清楚为什么作用域不起作用。目标是返回一个只能在另外两个函数层内访问的值:

function getLastPosition(db) {
var highest; // Declared in method's scope

db.transaction(function (tx) {
tx.executeSql('SELECT max(position) AS highest FROM FRUIT', [], function(tx, result) {
highest = result.rows.item(0).highest;
alert(highest); // Displays the number 2, as it should.
});
});

alert(highest); // Displays 'undefined'!
return highest;
}

我已阅读 Ryan Morr's guide但仍然毫 headless 绪......

编辑:所以事实证明这不是范围问题,而是异步执行问题。 return 语句在数据库调用完成之前执行。那么,我修改后的问题是如何在不诉诸更多回调的情况下获得最高值。

最佳答案

不知道您的库,但 db 建议您正在对数据库进行异步 ajax 调用。由于它是异步的,因此会向服务器发出请求,并继续执行到尚未定义最高值的下一行。稍后,当浏览器收到 ajax 调用的响应时,将执行回调函数并设置最高值。

您可以将回调函数传递给您的函数,并使用替换第一个警报的最高值来调用它,而不是返回最高值。

function getLastPosition(db, callback) {
var highest;
db.transaction(function (tx) {
tx.executeSql('SELECT max(position) AS highest FROM FRUIT', [], function(tx, result) {
highest = result.rows.item(0).highest;
callback(highest);
});
}); }

关于javascript - 从匿名函数层内访问方法变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35235001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com