我试图向 fancytree 的源选项提供 promise 。这个 Promise 应该做 4 件事:
- 从 pouchdb 数据库获取文档(使用 Promise allDocs())
- 从数据库内容同步生成树根
- 订阅数据库中的更改(使用changes() feed)
- 将 2. 中的树根返回到源。
我显然做错了什么。 Promise 的第 1 部分和第 2 部分正在执行,但其余部分将被忽略。我怀疑我误解了混契约(Contract)步和异步行为的 promise 链。我欢迎对我做错的地方提出建议。
所以本质上这是我的代码:
$(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;
})
}
)
最佳答案
抱歉 - promise 链很好。我的generateRootNodes 函数出现错误,导致 promise 链中止
关于javascript - pouchdb 向 fancytree promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50063472/