出于某种原因,我无法从设置在其外部的箭头函数内部设置变量。这是使用replit的数据库。当我发送包含嵌入箭头函数的消息时,它可以工作,但它将在单独的嵌入中。
这是我的代码:
ARDB.list().then(keys => {
const ARListEmbed = new Discord.MessageEmbed()
.setColor('#0099ff')
for (var I=0; I<keys.length; I++) {
ARDB.get(keys[I]).then(value => {
ARListEmbed.addField("["+(I+1)+"]"+" "+keys[I], value, true);
}));
};
message.channel.send(ARListEmbed);
});
任何和所有帮助将不胜感激!
答案 0 :(得分:0)
感谢您的帮助!但我似乎自己解决了这个问题。
这是以某种方式起作用的代码。
ARDB.list().then(keys => {
const Length = keys.length;
let Index = 0;
let ARListEmbed = new Discord.MessageEmbed()
.setColor('#0099ff')
.setTitle('9NK Discord Server Auto Responses:')
.setURL('https://www.youtube.com/watch?v=dQw4w9WgXcQ&ab_channel=OfficialRickAstley')
for (var I=0; I<keys.length; I++) {
let Key = keys[I];
ARDB.get(keys[I]).then(value => {
Index++;
ARListEmbed.addField("["+(Index)+"]"+" "+Key, value, true);
if (Index == Length) {
message.channel.send(ARListEmbed);
};
});
};
});
此代码有效,因为 Index 可以在箭头函数内更改,并在 for 循环再次循环时保持更改后的值,但在循环之外它说它是原始 self (0)。所以我在 Index == keys length 时发送消息。