node.js - embed 永远不会在 .then() 中添加字段
问题描述
我有一个函数 generateEmbed,它根据 id 获取用户,然后创建一个嵌入字段以添加到嵌入中。目前这实际上并未向嵌入添加字段。
有问题的功能:
function generateEmbed(startIndex, listOfPrompts, event) {
const currentPage = listOfPrompts.slice(startIndex, startIndex + pageLength);
const embed = new Discord.MessageEmbed()
.setTitle(`Writing prompts ${startIndex + 1}-${startIndex + currentPage.length} out of ${listOfPrompts.length}`);
currentPage.forEach(prompt => {
event.client.users.fetch(prompt.author).then(promptAuthor => {
const field2 = `${promptAuthor.username}#${promptAuthor.discriminator}`;
embed.addField(prompt.name, field2);
});
});
return embed;
}
只是为了确保我已经涵盖了所有内容,使其将 prompt.name 和 field2 记录到控制台显示它找到了正确的文本,但它没有被添加。从后来的测试中,我发现这是由于对 fetch 的异步调用,因为删除 fetch 命令并在 field2 中使用同步声明的文本是可行的。
解决方案
改变
const embed = new Discord.MessageEmbed()
至
var embed = new Discord.MessageEmbed()
推荐阅读
- angular - 错误:formGroup 需要一个 FormGroup 实例。(角度 12)
- spring - 如何使用“Mono”处理程序确认所有成功的消息?
- python - 延迟语句执行和测试结果不保持测试
- suitecrm - SuiteCRM 显示电话号码和时区的区号
- python - 如何将存储在变量中的文本转换为 Pyhton 中的 BeautifulSoup 对象
- node.js - 为什么在我的项目中包含 slick-carousel 会出错?
- javascript - 具有 EUM 的用户是否存在活动 SharePoint 帐户(Extranet 用户管理器/IdentityServer v2)
- google-apps-script - Google 电子表格脚本 - 搜索功能
- jquery - 当我尝试从谷歌电子表格获取数据时出现 404 错误
- javascript - 如何通过单击组件外部的按钮来刷新 React 组件?