递归回调的实现

异步树展开如果要实现展开回调比较困难,因为展开的过程是异步的。

前端:js引擎虽然是单线程执行,但是操作ui的线程是单独的,树的展开过程,就经历了js引擎线程+ui线程的过程,展开代码和展开回调的代码在不同时机执行的,本质上就是异步的。

展开回调的实现

展开回调的实现困难点在于判断展开结束的时机。树的展开是一个递归过程,本质上就是判断递归的结束时机。递归的过程,其实就是进栈出栈的过程。如果我们能够统计进栈出栈的次数,就能够判断出结束的时机。下面是验证代码(Java)

javascript实现版

下面是对 vue框架element-ui库中的tree组件 实现的展开回调,实现功能:展开异步树指定结点然后勾选结点

递归回调的实现,可以用一个变量统计剩余递归次数,当剩余递归次数为0时,则表示递归结束,可以执行回调函数。前端js是单线程,无需考虑线程安全问题,后端则需要考虑线程安全问题,java可以用原子类AtomicInteger统计次数。

Original: https://www.cnblogs.com/hdwang/p/16584597.html
Author: 追极
Title: 递归回调的实现

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/587751/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球