在我的Electron应用程序中,我有一个服务器地址列表,需要根据最短的响应时间对其进行排序。我有一个需要排序列表的函数:
[int]$int = 02
$int.ToString("00")
然后我有一个遍历服务器列表的函数:
function start() {
// first step, get list of servers
var servers_sorted = get_sorted_list_of_servers();
// rest of function
}
问题是我不确定如何获取每个服务器的ping时间。我发现了几个包装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;
}
实用程序的库(net-ping和ping)。但是,它们使用回调(考虑到对服务器执行ping操作可能需要一分钟,因此这很有意义),我需要某种方式来获取服务器时间列表。
ping
我已经考虑过让回调更新全局列表,但是一旦所有服务器都经过测试,我就需要某种方式发出信号。
任何指导表示赞赏。谢谢!
答案 0 :(得分:1)
您可以使用Promise.all
和map
遍历服务器列表,并等待所有Promises解析。这是使用ping的简单示例:
const sortBy = require('lodash.sortby');
const ping = require('ping');
const servers = ['google.com', 'facebook.com', 'amazon.com', 'apple.com'];
Promise.all(servers.map(server => ping.promise.probe(server))).then(response => {
console.log(sortBy(response, 'time'))
});
这是一个使用Promise.all并呈现结果的React演示:
https://server-ping-fuupenayzp.now.sh/
和来源
https://zeit.co/rusty-dev/server-ping/fuupenayzp/source?f=src/App.js