[JS] NeDB дождаться выполнения колбэка

Mizuwokiru

Величайший
Проверенный
Сообщения
945
Розыгрыши
0
Решения
1
Репутация
1 038
Реакции
449
Баллы
1 553
В общем при разработке приложеньки столкнулся с одной проблемой. В проекте использую React и NeDB. Фишка в том, что в NeDB все функции выполняются асинхронно и в момент получения результата функция-колбэк еще выполняется, то есть полноценный результат возвращается уже после отрисовки изменений DOM-дерева. Мне же нужно дождаться, пока функция выполнится, чтобы затем отобразить результат на странице.
Вот функция, которая используется для получения всех документов из БД:
Код:
export function getAllQuestions() {
  let questionList = [];
  window.questions.find({}, function (err, docs) {
    docs.forEach((value) => {
      questionList.push(value.name);
      console.log(value);
    }, this);
  });

  return questionList;
}
Затем в компоненте в функции render я сначала получаю результат:
Код:
const questionList = getAllQuestions();
А затем собственно возвращаю React-элемент.
Проблема кроется именно в колбэке:
Код:
function (err, docs) {
    docs.forEach((value) => {
      questionList.push(value.name);
      console.log(value);
    }, this);
  }
Как дождаться его выполнения, а затем вернуть результат?
 

В общем забил болт на это, теперь внутри колбэка меняю состояние компонента:
Код:
      window.subjects.insert({name: subjectName}, (err, newDoc) => {
        if (err)
          console.err(err.message);
        this.setState({activeModal: questionsModals.NONE});
      });
 
  • Мне нравится
Реакции: kick
Назад
Сверху Снизу