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