Я объявил переменную как «, а затем отредактировал ее внутри инструкции https.get() . Когда я пытаюсь зарегистрировать ее впоследствии, она по-прежнему отображается как «

#javascript #string

#javascript #строка

Вопрос:

Когда я редактирую переменную внутри инструкции https.get() и регистрирую ее, она работает так, как должна. Когда я пытаюсь зарегистрировать ее снаружи, это похоже на то, что она вообще никогда не редактировалась. Есть ли способ предотвратить это?

 const https = require('https');

//The data object is a JSON file that is gotten from an api. It has a GuildMembers array which contains an expHistory object, which requires a ton of formatting to get the numbers from the object.
data = JSON.parse(data)
let guildMembers = data.guild.members
let output = ''
for (let i=0; i<guildMembers.length; i  ) {
    let weeklyXP = JSON.stringify(guildMembers[i].expHistory)
    //this part removes some unnecessary characters from the expHistory
    for (let x=1;x<=14;x  ) {
      weeklyXP = weeklyXP.replace('"', '')
    }
    let weeklyXPArray = weeklyXP.split(',')
    let XPArray = [weeklyXPArray[0].split(':')[1], weeklyXPArray[1].split(':')[1], weeklyXPArray[2].split(':')[1], weeklyXPArray[3].split(':')[1], weeklyXPArray[4].split(':')[1], weeklyXPArray[5].split(':')[1], weeklyXPArray[6].split(':')[1].replace('}', '')]
    //After the formatting above, this part adds all the expHistory, turns it into a number and adds it to 'total'.
    let total = 0
    for (let y=0; y<XPArray.length;y  ) {
      total  = parseFloat(XPArray[y], 10)
    }
    //this is the https.get() to another api, it is run to get each user in the guildMember array's username using an api.
    https.get(`https://api.mojang.com/user/profiles/${guildMembers[i].uuid}/names`, (resp) => {
        let mojangData = ''
                                                    
        resp.on('data', (chunk) => {
        mojangData   = chunk
        })
        resp.on('end', () => {
        mojangData = JSON.parse(mojangData)
        let playerUsername = mojangData[mojangData.length - 1]
        //The 'format' variable is a string that is used to add all the information to 'output'
        const format = `n${playerUsername.name} with ${total} GEXP`
        output  = format
        })
        while (output !== '') {
            console.log('x') //returns infinite 'x's
        }
    })
    while (output !== '') {
        console.log('y') //returns no y's
    }
}
//this is where I am trying to send 'output'
 

Ответ №1:

Я думаю, вы забыли экранировать двойную кавычку. Попробуйте использовать " вместо "