Привет друзья! Надеюсь, у вас все хорошо.
Итак, в этом фрагменте кода у меня есть список из десяти серверов, которые я хочу запросить. Эти десять серверов представлены десятью портами, которые я определил сверху в const "ports".
Идея состоит в том, чтобы использовать forEach () для "ports" и запускать запрос на каждом сервере. Объект возвращается при каждом запуске запроса и добавляется в изначально пустой массив «data».
ТО! После того, как «данные» были загружены с десятью объектами, содержащими статус моих серверов, я хочу вернуть их обратно на клиентскую сторону!
Однако ..... это не то, что происходит. Port.forEach () прекрасно выполняет запрос и добавляет в массив «данные» ... но не раньше, чем res.json бросает оружие и отправляет пустые данные обратно моему скоро разочаровавшемуся клиенту.
Пока ... Я пробовал обратные вызовы и async / await ... но я не определил синтаксис для него ... Любые советы будут потрясающими! Спасибо за ваше время, друзья!
module.exports = app => {
app.get("/api/seMapServerStatus", (req, res) => {
const ports = [ "27111", "27112", "27117", "27118", "27119", "27110", "27115", "27116", "27113", "27114" ]
const data = []
function hitServers(port){
Gamedig.query({
type: "aGameType",
host: "theServer'sIP",
port: port
}).then((state) => {
data.push(state)
console.log("this is the server", state)
}).catch((error) => {
console.log("Server is offline");
});
};
ports.forEach(port => {
hitServers(port)
})
});
console.log("and here is the final server list", data)
res.json(data);
}