Я пытаюсь дать обещание исходной опции fancytree. Обещание должно делать 4 вещи:
- Получить документы из базы данных pouchdb (используя обещание allDocs ())
- Генерация корней деревьев из содержимого БД - синхронно
- Подписаться на изменения в БД (с помощью изменения ())
- вернуть корни дерева из 2. в источник.
Я явно что-то делаю не так. Части 1 и 2 обещания выполняются, а остальное игнорируется. Я подозреваю, что неправильно понял цепочку обещаний со смешанным синхронным и асинхронным поведением. Я бы приветствовал предложения относительно того, что я делаю неправильно.
Так что по сути это мой код:
$(function(){
$("#tree").fancytree(
source: function fetchDocsAndSubscribe () {
return pouch.allDocs({...})
.then (function (docs) {
return generateRootNodes (docs) // sync
})
.then (function (rootNodes) {
pouch.changes({live: true,....})
.on('change', function (change) {
onChange (change);
})
.on('error', function (error) {
console.log("Change error: " + error);
});
return rootNodes;
})
.catch(function (err) {console.log('error: ' + err);
return;
})
}
)