Я новичок в асинхронных функциях.Я хочу использовать приведенный ниже код, чтобы задать пользователю вопрос и отреагировать на вопрос знаком X или галочкой, чтобы пользователи ответили, следует ли удалять что-либо, чтобы освободить место для новой записи.
Функция ниже работает отлично.Тем не менее, я хочу передать результат из функции из функции, чтобы я мог сделать оператор if else за ее пределами, и вот где я застрял.
Я посмотрел онлайн и увидел несколько вещейсвязанные с используемыми обратными вызовами, но каждый пример, который я видел, отличается от того, что, на мой взгляд, похоже, поэтому я просто запутался.И ни один из этих примеров не использовался для реакции на разногласия, поэтому я просто не уверен, куда идти.
const agree = "✅"
const disagree = "❌"
let msg = await message.author.send("You have made the maximum number of decks. Would you like to delete one of your decks in order to make a new one? Please react with one of the following...")
await msg.react(agree)
await msg.react(disagree)
const filter = (reaction, user) => {
return ['✅', '❌'].includes(reaction.emoji.name) && user.id === message.author.id;
};
const reactions = await msg.awaitReactions(filter, {
max: 1
}).then(collected => {
const result = collected.last();
})
return result;
}
deleteDeckQuestion(function(result){
console.log(result)
}).catch(err => console.error(err))
Приведенный выше код приводит к тому, что «undefined» регистрируется в консоли при запуске deleteDeckQuestion,В противном случае ошибок нет.Я бы хотел, чтобы переменная Results была доступна для меня вне функции, чтобы я мог сделать оператор if else, основываясь на том, какую реакцию пользователь добавил к вопросу.
Я попытался поместить оператор if else, который хотелиспользовать с результатами deleteDeckQuestion внутри асинхронной функции, и она работала нормально, но затем внутри результата «Да» этой функции я хочу поместить другую асинхронную функцию, чтобы спросить, какая колода 1, 2 или 3 должна быть удалена и иметь такую жесценарий реакции-ответа-на-вопрос.Просто спасает пользователя, набирающего больше, чем нужно, для удобства мобильных пользователей.
Было бы проще, если бы я просто поместил асинхронную функцию в другую асинхронную функцию?Что-то подсказывает мне, что это не лучшая идея с точки зрения эффективности.В конечном итоге эти реакции приведут к использованию запросов mysql, которые мне удобно использовать, но они получатся довольно длинными, а функции внутри других функций просто кажутся беспорядком ... не уверен, является ли это частью "ада обратного вызова" I 'Мы читали радости, хотя ...
Спасибо за любую помощь заранее.