gpt4 book ai didi

javascript - 将参数传递给 indexedDB 回调

转载 作者:太空宇宙 更新时间:2023-11-04 15:45:53 25 4
gpt4 key购买 nike

我对 JS 很陌生,对 indexedDB 甚至更陌生。我的问题是我需要从回调函数中引用一个对象。因为“req.onsuccess”不称为“synchron”,所以“this”不引用 Groupobject。这就是为什么“this.units”和其他变量未定义。一个非常肮脏的解决方法是使用全局变量,但我只是不愿意这样做。还有别的办法吗?也许将参数传递给回调?

function Group(owner, pos)
{
this.name = "";
this.units = [];
//...
}
Group.prototype.addUnit = function(unit)
{
let req = db.transaction(["units"]).objectStore("units").get(unit);
req.onsuccess = function(event)
{
let dbUnit = event.target.result;
if (dbUnit)
{
this.units.push(dbUnit);//TypeError: this.units is undefined
if (this.name == "")
{
this.name = dbUnit.name;
}
}
};
};
myGroup = new Group(new User(), [0,0]);
myGroup.addUnit("unitname");

感谢您的帮助!

编辑

使用“bind(this)”解决了这个问题。

Group.prototype.addUnit = function(unit)
{
let req = db.transaction(["units"]).objectStore("units").get(unit);
req.onsuccess = function(event)
{
let dbUnit = event.target.result;
if (dbUnit)
{
this.units.push(dbUnit);//TypeError: this.units is undefined
if (this.name == "")
{
this.name = dbUnit.name;
}
}
};
}.bind(this);

最佳答案

那么你的 onSucess 在哪里?我们来尝试一下JS中的Bind、call、apply。 http://javascriptissexy.com/javascript-apply-call-and-bind-methods-are-essential-for-javascript-professionals/ .

关于javascript - 将参数传递给 indexedDB 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43573074/

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