dimanche 8 mars 2015

How to get around the asynchronous Node.js behaviour?

I'm working on a script that pings websites and returns the results in a web UI. However, I've run into a problem which I am trying to figure out the best solution for.


This block of code needs to return a array of statuses but due to the asynchronous behaviour of Node.js, it returns an empty array because the code takes time to execute.


Here is what I have:



var ping = require('ping');

function checkConnection(hosts) {

var results = [];

hosts.forEach(function (host) {
ping.sys.probe(host, function (isAlive) {
results.push({"host": host, "status": isAlive});
});
});

return {results: results, timestamp: new Date().getTime()};
}

module.exports.checkConnection = checkConnection;


I know that you could solve this problem with the use of timers but what would be the simples and most ideal solution here?


Aucun commentaire:

Enregistrer un commentaire