javascript - 访问箭头函数范围之外的变量
问题描述
出于某种原因,我无法从设置在外部的箭头函数内部设置变量。这是使用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);
});
任何和所有的帮助将不胜感激!
解决方案
谢谢你的帮助!但我似乎自己解决了这个问题。
这是以某种方式起作用的代码。
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)。所以我在索引 == 键长度时发送消息。
推荐阅读
- php - 如果 [在 php 中] 为空,如何从检索中跳过图像字段?
- reactjs - 如何从 withHandlers 调用另一个函数?
- angular - 如何在重新加载时在组件之间保留共享服务数据
- python - 在 Spyder 中运行 Vpython 时出错(NameError: name 'gsprint' is not defined)
- sql - Excel 公式到 SQL
- java - 构建 SNAPSHOT 时不会触发 Jenkins Multibranch 项目
- html - 通过链接文本抓取网页
- python-2.7 - 在通过 init 脚本启动的 python 脚本中,无法通过 os.system('scp (...)') 下载文件
- c# - 跟踪侦听器未生成日志文件
- c++ - 如何设置 vscode 错误列表以使用 nvcc 的输出