Асинхронный алгоритм посещения n-арного дерева - PullRequest
0 голосов
/ 06 октября 2018

Я в очень необычной ситуации.Мне нужно посетить 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 ()?Каким образом я могу понять, что посещение дерева было окончено?У меня нет рекурсивного стека ..

...