Показать сообщение отдельно

  #1  
Старый 17.04.2017, 06:15
Mizuwokiru
Постоянный
Регистрация: 07.04.2015
Сообщений: 960
С нами: 5842272

Репутация: 1039


По умолчанию

В общем при разработке приложеньки столкнулся с одной проблемой. В проекте использую 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);
  }
Как дождаться его выполнения, а затем вернуть результат?
 
Ответить с цитированием