асинхронная запись узла js из переменной, которая случайно обновляется, как сети Wi-Fi

results = []
chunk_size = 10
while(array.length > 0){
   results.push(array.splice(0, chunk_size))
}
0
задан Pro 22 February 2019 в 12:45
поделиться

1 ответ

Вы влияете на немедленное возвращаемое значение 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 [118 ]

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
}
0
ответ дан Kapcash 22 February 2019 в 12:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: