在控制台中可见的JavaScript元素,但浏览器无法找到它 - '承诺'变量

时间:2017-08-14 08:43:02

标签: javascript variables constructor promise

我在访问在类文件的构造函数中用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变量及其所有内容:

console.log(currentGuild)

有什么建议吗?

0 个答案:

没有答案