He estado tratando de encontrar preguntas similares a las mías durante mucho tiempo, pero no he encontrado ninguna con el mismo escenario que yo, así que me gustaría publicar este caso más específico aquí. Tengo una comprensión decente sobre cómo funcionan las llamadas a funciones, pero no puedo entender por qué esta función simplemente no parece devolver un valor. Así que tengo esta función aquí:
function createServerCommand(guildID: string, commandName: string) { var commandData try { commandData = UTIL.loadJSON(`SlashCommands/${commandName}.json`) } catch (error) { console.log(`============\nWarning: Couldn't find command data with name '${commandName}'`) return null } const targetGuild = client.guilds.cache.get(guildID) let commands = targetGuild?.commands commands?.create(commandData).then(function(command) { console.log(`============\nCommand created in server ${guildID}\nCommand name: ${commandName}\nCommand ID: ${command.id}`) return command.id }) }(lo siento si es un código incorrecto, soy bastante nuevo en JavaScript)
Y he probado que esta función llega a la declaración de devolución cada vez de manera consistente. Sin embargo, en realidad no parece estar devolviendo su valor al lugar desde donde lo llamo. Código donde estoy llamando a la función:
let serverData = SSCM.getServer(guildID) let commandID = createServerCommand(guildID, commandName) //while (typeof commandID === 'undefined') { console.log("TRYING TO WAIT") } console.log(commandID) if (!commandID) { UTIL.sendCommandError(interaction) return } serverData.addCommand(commandName, commandID)No importa lo que parezca, el programa trata la variable "commandID" como indefinida, y al probarla con la declaración while (comentada anteriormente) para forzar esencialmente al programa a esperar hasta que se definió, el programa simplemente mostró "INTENTANDO ESPERAR" para siempre ( sin embargo, también se alcanzó la declaración de devolución, ¿entonces simplemente se ignoró?). ¿Alguien tiene una manera de explicar esto a alguien bastante nuevo en JavaScript?