Вы влияете на немедленное возвращаемое значение iwlist.scan()
в переменную n
.Эта функция использует классический обратный вызов nodejs для обработки асинхронного поведения, поэтому она всегда может возвращать неопределенное значение, поскольку результат переходит в обратный вызов.
Два решения:
1) Влияет на результат переменнойвнутри обратного вызова
function scan(myCallback) {
iwlist.scan({
iface : 'wlp1s0',
show_hidden : true
}, myCallback);
});
const Server = http.createServer(function(req, res){
var n;
scan(function(error, result) {
n = result;
res.write(n);
res.end();
});
});
2) Вы преобразуете существующую функцию в обещание, используя Promisify
var scanAsync = utils.promisify(iwlist.scan)
function async scan() {
// Will return the result as a promise
return scanAsync({
iface : 'wlp1s0',
show_hidden : true
});
};
try {
var n = await scan();
} catch (e) {
// Handle error
}