【问题标题】:NodeJS provided callback function returns 'callback is not a function'NodeJS 提供的回调函数返回“回调不是函数”
【发布时间】:2016-12-16 18:53:16
【问题描述】:

我正在调用一个函数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);
        }
    });

}

【问题讨论】:

  • 您在没有回调的情况下拨打scan_dir(path + '/' + item)
  • 哦,当然,有道理。所以我添加了function(){},但这似乎有点笨拙,不仅如此,而且最终的回调似乎没有触发,console.log('end') 会但console.log('items', item) 不会。
  • 这很奇怪。好吧,您可能希望将files.push 放入回调中。因为scan_dir 没有返回任何东西。

标签: javascript node.js callback jquery-callback


【解决方案1】:

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

我得到了这个作为回应:

结束 ['config.html','config.html~','config.js','config.js~'] 完毕 项目 ['config.html', 'config.html~', 'config.js', 'config.js~']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-08
    • 2017-03-28
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 2021-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多