В моем приложении Electron у меня есть список адресов серверов, которые мне нужно отсортировать по кратчайшему времени отклика. У меня есть функция, которая нуждается в отсортированном списке:
function start() {
// first step, get list of servers
var servers_sorted = get_sorted_list_of_servers();
// rest of function
}
Тогда у меня есть функция, которая перебирает список серверов:
function get_sorted_list_of_servers() {
// access unsorted list from file
unsorted_servers.forEach((server) => {
// Get ping times for each server
// Here is where I am stuck
});
// Sort based on ping times....
return sorted_list_of_servers;
}
Проблема в том, что я не уверен, как получить время пинга для каждого сервера. Я нашел пару библиотек, которые обертывают утилиту ping
( net-ping и ping ). Однако они используют обратные вызовы (что имеет смысл, учитывая, что проверка связи с сервером может занять минуту), и мне нужен какой-то способ получения списка времени сервера.
// From ping example code
unsorted_servers.forEach(function (server) {
ping.promise.probe(host).then(function (res) {
console.log(res);
// Update a global variable here??
});
});
Я думал о том, чтобы позволить обратным вызовам обновить глобальный список, но затем мне нужен какой-то способ сигнализации, когда все серверы будут протестированы.
Любое руководство приветствуется. Спасибо!