Задать вопрос
@lohmag

Как обойти cобытийную модель js?

Возник такой вопрос исходящий из логики работы js, не знаю как его обойти
var readMacs = function(collection) {
  var macs;
  MongoClient.connect('mongodb://127.0.0.1:27017/snmp', function(err, db) {
    if (err) throw err;
    db.collection(collection).distinct('mac', function(err, docs) {
      console.log(docs);
      db.close();
      return docs;
    })
  });
};
console.log(readMacs('allowedmacs'));

Вот что возвращает:
undefined
[ '111a.468a.4985',
  '12aa.468a.4444',
  '14aa.468a.4444',

Т.е. сначала идет console.log(readMacs('allowedmacs')), который возвращает undefined, а потом уже console.log внутри вызова в базе.
Но мне надо вызвать эту функцию несколько раз, присвоить возвращаемое значение в разные переменные и потом использовать их внутри другой функции, как это сделать? Можно вызвать следующую функцию внутри db.collection(collection).distinct('mac', function(err, docs) {}) но мне надо ее пеед этим несколько раз вызвать и использовать несколько переменных.
  • Вопрос задан
  • 296 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
olegshilov
@olegshilov
Почитайте про обещания.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@de1m
Можно использва "async", замечательно для таких ведей подходит.
Делаете массив с функциями и потом этот массив скармливается "asycn.parallel" или "async.serial", в зависимости от того хотите вы их последовательно или паралелльно выполнять.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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