Node.js |回调没有定义

时间:2017-05-10 12:21:50

标签: node.js callback

我是Node.js的新手,我正在尝试理解回调。我想知道我的代码有什么问题。我原以为它会在目录中显示没有扩展名的所有文件,但我得到的只是undefined消息。

'use strict';

const fs = require('fs');
const postsDirectory = './app/posts';

function listPosts(callback) {
    let posts = [];
    fs.readdir(postsDirectory, function(err, files) {
        if (err) {
            callback(err);
        } else {
            files.forEach(file => {
                posts.push(file.split('.').slice(0, -1).join('.'));
            });
            callback(posts);
        };
    });
};

console.log(listPosts());
process.exit(0)

预期产出:

file1
file2
file3

1 个答案:

答案 0 :(得分:1)

以下列方式使用回调

'use strict';

const fs = require('fs');
const postsDirectory = './app/posts';

function listPosts(callback) {
    let posts = [];
    fs.readdir(postsDirectory, function(err, files) {
        if (err) {
            return callback(err);
        } else {
            files.forEach(file => {
                posts.push(file.split('.').slice(0, -1).join('.'));
            });
           //check before return here
           console.log("postttttttttttttttttt", posts);

           return callback(null, posts);
        };
    });
};

//Use callback function with params
listPosts(function(err,result){
       if(err){
          console.log(err)
        }else{
           console.log(result)
        }
 });
 process.exit(0)