【发布时间】:2016-02-14 13:20:51
【问题描述】:
首先我想我会在这个很棒的帖子之后解决这个问题:nodeJs callbacks simple example
但是,我仍然不确定如何进行。就像标题暗示的那样:我需要一个回调给一个已经有节点参数传递给它的回调
代码:
(function()
var reqs = {
http: require('http'),
path: require('path'),
fs: require('fs')
};
reqs.http.createServer(function (request, response) {
response.writeHead(200, {
'Content-Type': 'text/plain'
});
response.end('Hello HTTP!');
}).listen(8080);
var printCount = function(count) {
console.log(count);
};
var callCount = function(err, list, callback) {
var count = 0;
if(err) throw err;
// console.log(err);
for (var i = 0; i < list.length; i++) {
// console.log(reqs.path.extname(list[i]));
if(reqs.path.extname(list[i]) === ".png" || reqs.path.extname(list[i]) === ".jpg")
{
count++;
console.log(count);
}
}
callback(count);
};
//count images from executing directory
var countImages = function(dirName) {
var imageCount = reqs.fs.readdir(dirName, callCount(null, null, printCount));
};
countImages(__dirname);
})();
我认为这里的关键是
var imageCount = reqs.fs.readdir(dirName, callCount(null, null, printCount));
我将 printCount 函数传递给在 fs.readdir 异步执行后回调的同一个函数,但似乎我将 null 传递给它的前两个参数是覆盖自动传递回调 err 和 list 的 Node 功能。我怎样才能解决这个问题?我只是想计算执行目录中的图像并能够将该值存储在我的主函数中。
对于事件风格的编程来说非常陌生。欢迎任何额外的阅读建议。那里有很多内容,但我真的很想在这个周末开会。谢谢大家!
【问题讨论】:
标签: javascript node.js callback