我在访问在类文件的构造函数中用JavaScript承诺编写的变量时遇到问题。我曾经只使用过一次承诺,尽管对它们做了一些额外的阅读,但它对我来说仍然有点混乱,所以我认为这是我出错的地方。
以下是有问题的代码:
$('.my-selector').eq(n).toggleClass('background-red');
- 这是一个通过promise
Guild.js
class Guild extends MapObject {
constructor(x, y, floor, type, name) {
super(x, y, floor);
this.levels = [];
this.type = type;
this.name = name;
this.id = this.type + this.position.x + this.position.y;
this.guildSelector().then((gData) => {
this.guildData = gData;
this.addLevels(this.name);
this.setTip();
});
}
setTip() {
this.tip = this.name;
}
guildSelector() {
return new Promise((resolve, reject) => {
var oReq = new XMLHttpRequest();
this.guildData = null;
oReq.onload = reqListener;
oReq.open("get", "/json/guilds.json", true);
oReq.send();
function reqListener() {
this.guildData = JSON.parse(this.responseText);
resolve(this.guildData);
}
})
}
}
- 使用Guild.js实例的主类
map-maker.js
所以我遇到的问题是当我将一个新的guild.js实例推送到我的map类(本质上是一个对象的容器)时,我可以访问公会的每个变量,除了promise中的一个变量({{1} })。
我真的很困惑,如果我输入:
在初始化公会实例后直接 function createGuildObject(x, y, floor, type, name) {
return new Promise((resolve, reject) => {
console.log("createGuildObj");
currentMap.objects.push(new Guild(x, y, floor, type, name));
var currentGuild = currentMap.objects[currentMap.objects.length - 1];
console.log(currentGuild.guildData);
resolve(currentGuild);
});
}
我看到this.guildData
。
但如果我输入:
console.log(currentGuild.guildData);
我看到了guildData变量及其所有内容:
有什么建议吗?