我的处境非常罕见。我需要访问带有异步功能的n元树,但是从同步切换到异步的问题是我丢失了任何返回反馈。让我用一些代码来解释。
这是JavaScript中的探索功能:
function exploreTree(currentNode, level, network_tree, cb) {
console.log("Exploring: " + currentNode);
getAsyncNodeInfo(currentNode, function (err, data) {
if (!err) {
network_tree[level].push(data.Item);
data.Item.childs.forEach(childNode => {
exploreTree(childNode, level + 1, network_tree, cb);
});
}
})
}
这是一个简单的预订访问,console.log()输出正确。但是现在我什么时候应该调用cb()?我以哪种方式可以理解树访问已结束?我没有递归堆栈。