NodeJS提供了回调函数返回'回调不是函数'

时间:2016-12-16 18:53:16

标签: javascript node.js callback jquery-callback

我正在使用要传递的参数和回调函数调用函数scandir()。一旦该函数完成,我称之为回调,但是我得到callback is not a function。我不明白我哪里出错了,任何帮助都会受到赞赏。

脚本文件:

scan_dir(working_dir, function(items){
    console.log('done');
    dir_items = items;
    console.log('items', dir_items);
});

函数文件:

var scan_dir_count = 0;

function scan_dir(path, callback){
    scan_dir_count++;

    fs.readdir(path, function(err, files){ 
        files.forEach(function(item, index){
            //console.log(index, item);
            if (fs.lstatSync(path + '/' + item).isDirectory()){
                files.push(path + '/' + scan_dir(path + '/' + item));
            }
        });
        scan_dir_count--;

        if (scan_dir_count == 0){
            console.log('end');
            callback(files);
        }
    });

}

感谢。

编辑:已更新至4castles响应。不再返回任何错误,但回调函数似乎没有触发...

var scan_dir_count = 0;

function scan_dir(path, callback){
    scan_dir_count++;

    fs.readdir(path, function(err, files){ 
        files.forEach(function(item, index){
            //console.log(index, item);
            if (fs.lstatSync(path + '/' + item).isDirectory()){
                scan_dir(path + '/' + item, function(data){ files.push(item + '/' + data); });
            }
        });
        scan_dir_count--;

        if (scan_dir_count == 0){
            console.log('end');
            console.log(files);
            callback(files);
        }
    });

}

1 个答案:

答案 0 :(得分:0)

你确定该功能不会触发吗?我给了一个示例文件夹的地址,它似乎工作正常:

我得到了这个回复:

端 [' config.html',' config.html~',' config.js',' config.js~' ] DONE 项目[' config.html',' config.html~',' config.js',' config.js~' ]