así que estoy tratando de hacer un paquete de nodos para la API de Roblox, y dentro de él, he decidido adoptar un enfoque OOP. El problema surge cuando los atributos como <RobloxUser>.id aparecen inesperadamente como indefinidos, agregué declaraciones de console.log y las llamadas API devuelven los valores esperados.
Originalmente agregué un IIFE asíncrono dentro del constructor de clases para hacer llamadas usando la sintaxis asíncrona/espera y estaba teniendo este problema. Así que pensé que era un problema de alcance o algo por el estilo y cambié mi sintaxis a la sintaxis de estilo "callback hell" y todavía tengo este problema.
Para probar mi teoría, configuré una variable <RobloxUser>.test = 0 , luego usé console.log , imprimí 0 como se esperaba, luego lo configuré igual a 2 dentro de la devolución de llamada y lo imprimí fuera de la devolución de llamada y volvió a imprimir 0.
En todo el tiempo que he trabajado con Javascript, nunca he tenido un problema similar a este, si alguien puede ofrecerme una idea de cómo puedo resolver este problema, se lo agradecería mucho.
Código de clase RobloxUser:
class RobloxUser { constructor(response) { axios.get(`https://users.roblox.com/v1/users/${response.data.Id}`).then(res => { this.username = res.data.name; this.displayName = res.data.displayName; this.id = res.data.id; this.info = { }; let joinDate = new Date(res.data.created); let now = new Date(); this.info.accountAge = Math.round(Math.abs((joinDate.getTime() - now.getTime()) / (24 * 60 * 60 * 1000))); this.info.isBanned = res.data.isBanned; }); axios.get(`https://friends.roblox.com/v1/users/${this.id}/friends/count`).then(res => { this.info.friendCount = res.data.count; }); axios.get(`https://friends.roblox.com/v1/users/${this.id}/followings/count`).then(res => { this.info.followingCount = res.data.count; }); axios.get(`https://friends.roblox.com/v1/users/${this.id}/followers/count`).then(res => { this.info.followerCount = res.data.count; }); axios.get(`https://users.roblox.com/v1/users/${this.id}/username-history`).then(res => { this.info.pastUsernames = res.data.data.map(data => data.name) }); } getThumbnailURL() { } }