Привет, я новичок в NodeJs и Javascript. У меня есть требование вернуть значение ключа из вызова типа обещания. Я звоню в NodeJs модуль ping, где я хочу сделать асинхронный вызов для пинга IP-адресов, и я хочу сохранить IP-адрес в качестве ключа и достижимый статус в качестве значения на карте. Мой код работает, когда я могу печатать в консоли, но не могу вернуть карту. Я приведу ниже код. Пожалуйста, помогите мне, потому что я поражен.
import { FileUtil } from "./util/file-util";
import ping = require("ping");
export class Test1 {
public async pingManyIPAddress(): Promise<Map<string, boolean>> {
let map: Map<string, boolean> = new Map();
let fileUtil = new FileUtil();
const fileNamePath: string = "testData/ipaddress-50.txt";
const allIPs: string[] = await fileUtil.readFileLineByLineNonBlocking(fileNamePath);
let cfg = {
timeout: 10 // Timeout in seconds
};
allIPs.forEach(ip => {
ping.promise.probe(ip, cfg).then((data: any) => {
let ipAdrs = ip;
let status = data.alive;
console.log(ip,":",status); //Prints all IP and reachable status
map.set(ip, status);
});
});
// How to wait till the above promise line gets completely executed
return Promise.resolve(map);
}
public async justCheck(): Promise<void> {
let map: Map<string, boolean> = await this.pingManyIPAddress();
for (let key of Object.keys(map)) {
console.log(key + " <-> " + map.get(key));//It does not print
}
}
}
let test2 = new Test1();
test2.justCheck();
Пожалуйста, помогите мне узнать, чтобы я мог изменить приведенный выше код, чтобы вернуть карту.