请原谅我,如果我重复一个已经非常被问到的问题,但到目前为止我看到的所有内容似乎都没有给我递归,或者没有映射到我们正在做的事情,承诺和推迟的主题似乎非常复杂为了我.
我有一个"主题树",可以在用户扩展节点时异步构建.本主题使用API端点构建,该端点在单击主题树节点上的(+)按钮时返回节点的子节点.
当用户单击按钮时,我尝试使用如下所示的方法递归加载主题树元素:
function getAssociatedTopics(){ $.get('/topics/curriculum-associations', {guids: [...]}) .then(function(data){ //Process the topic information here var topicId = /* some processing */; //Get ancestors of each topic returned $.get('/topics/getAncestors', {of: topicId}) .then(function(data){ //Process the topic information here var topicId = /* some processing */; //Get ancestors of each topic returned //Rinse repeat as long as we find children of each topic found }); }).then(function(){ //Expand the nodes //Select the nodes }); }
所以这应该是它应该是什么样子但是我都失去阅读文档以确保我的东西以正确的顺序执行...我们现在使用这种结构的大问题是我的节点都在并发加载方式,然后擦除所选节点,随时打开和关闭节点,选择结束超级凌乱.
我不想深入解释承诺,也不想要一个完整的解决方案,而是一个大致的想法如何实现这一目标.