SAP Spartacus B2B Org Unit List节点展开的递归逻辑实现
Rustic Services有兩個子節點,點擊之后,觸發toggle方法:
子節點分別是Services East和Services West:
this.treeToggle$是一個BehaviorSubject:
toggle執行后,執行next方法,通知subscriber:
我想知道的是這個Mapsubscriber是什么時候訂閱的:
可以在Chrome調試器里找到Mapsubscriber的方法實體project:() => tree, 然后作為關鍵字在Visual Studio Code里搜索:
這個value包含的值,應該就是整棵tree, 即() => tree的執行結果:
重新對整棵樹進行排序:
首先把整個完整的tree節點加到values數組里:
然后遞歸處理第一個子節點Rustic Services:
將該子節點,Rustic Services,插入到values數組里,因為遞歸進入convertListItem, values數組已經重新初始化了:
此處準備再次進入Rustic Services的子節點Services East的遞歸處理邏輯:
因為Servies East沒有子節點了,所以跳過74行forEach的執行:
出棧,返回包含Servies East單個元素的數組:
以及計數器3:因為我們總共touch了三個樹節點:root,Rustic Services和Services East:
當前執行上下文里,處理的節點是Rustic Services,處理的子節點為Services East,第75行convertListItem返回的values數組包含的值是Services East的數據,而原有的values,包含的數據是Rustic Services的值:
同樣,下一步處理Services West這個子節點:
至此,Rustic Services本身及其子樹已經處理完畢。values數組總共包含三個元素:
所以我們能夠看出,這是一個深度優先遍歷策略:
最后的處理結果:
更多Jerry的原創文章,盡在:“汪子熙”:
總結
以上是生活随笔為你收集整理的SAP Spartacus B2B Org Unit List节点展开的递归逻辑实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10 经常自动断网,修复时提示:&
- 下一篇: CSS里的inline-size和逻辑属