【发布时间】:2018-10-08 08:41:55
【问题描述】:
我正在尝试为 fancytree 的源选项提供一个承诺。承诺应该做 4 件事:
- 从 pouchdb 数据库中获取文档(使用 promise allDocs())
- 从 db 内容生成树根 - 同步
- 订阅数据库中的更改(使用 changes() 提要)
- 将树根从 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;
})
}
)
【问题讨论】:
标签: javascript promise pouchdb fancytree