Во-первых, я пишу в node.js, используя разногласия модулей. js, запрос и запрос-обещание. У меня проблемы с отправкой тонны (около 70) различных запросов на сервер. Я продолжаю получать один и тот же результат от разных запросов. 'https://api.mojang.com/user/profiles/' + entry.uuid + '/names'
Это запрос, который я делаю, у меня есть forEach l oop, который просматривает список URL, как этот. Вот мой код для запросов:
function getNames() {
count = 0;
msg.channel.send("Started getting Names");
urls.forEach(function() {
request(urls[count], function(err, res, body) {
if (!err && res.statusCode == 200) {
const obj = JSON.parse(body);
names[count] = body[0].name;
msg.channel.send(urls[count] + ", Username " + count + ": " + obj[0].name);
} else {
msg.channel.send("Username Error: " + err);
}
});
count++;
});
while (true) {
if (names.length != urls.length) {
msg.channel.send("Finished getting Names");
console.log("UUIDs:" + urls.join(", "));
console.log("Names:" + names.join(", "));
break;
}
}
}
Команды msg.channel.send
, которые я использую для отладки своего кода (несогласие. js, если вам интересно). Теперь моя проблема заключается в следующем: msg.channel.send(urls[count] + ", Username " + count + ": " + obj[0].name);
всегда дает мне новый URL, но с тем же именем пользователя, что и в первом запросе (obj[0].name
всегда одинаково). Итак, скажем, у меня есть 3 разные URL-адреса, первый URL-адрес пользователя - Эван, второй - Джек, третий - Джон. Когда я запускаю код, мой массив имен будет ["Evan", "Evan", "Evan"]
вместо ["Evan", "Jack", "John"]
. Я думаю, это потому, что мой код не ждет результата запроса, прежде чем двигаться дальше. Я уверен, что, вероятно, есть много лучших способов сделать это, я был бы признателен за любые советы.