基于递归目录的回调 - Node.js

hen*_*ald 1 javascript recursion mongodb node.js

我有一个递归函数,它执行一种树过程,其中每个调用可以多次调用自身,我无法知道它的深度或宽度.整个过程完成后如何运行回调?

我正在考虑让某种对象传递给我做计数,但还没有完全破解它,我想知道是否有一个已知的最好/更好的方法来做到这一点.

Sea*_*ean 5

你可以这样做:

function recurseTree(arg, callback) {
    var recurse = function(a) {
        if (someCondition) {
            recurse(a);
        }
    };
    recurse(arg);
    callback();
}
Run Code Online (Sandbox Code Playgroud)

所有实际的递归逻辑都将进入recurse函数,并且只有在所有递归完成后才会调用回调.

编辑:

这是一个简单的实现

function recursiveAlert(x, callback) {
    var recurse = function(y) {
        alert(y);
        if (y < 3) {
            recurse(y + 1);
        }
    }
    recurse(x);
    callback();
}

recursiveAlert(0, function() { alert('done'); });
Run Code Online (Sandbox Code Playgroud)