给一个提供的NodeJS回调我自己的自定义回调
Giving a provided Node JS callback my own custom Callback
首先,我想我会在这个伟大的线程之后解决这个问题:nodeJs回调简单的示例
然而,我仍然不确定如何进行。就像标题所暗示的那样:我需要一个回调给一个已经有节点参数传递给它的回调
代码:
(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传递给它的前两个参数是在覆盖Node功能,该功能自动传递回调err
和list
。我该怎么绕过这个?我只想计算执行目录中的图像,并能够将该值存储在我的主函数中。
对事件风格的编程来说还很新鲜。欢迎任何额外的阅读建议。有很多内容,但我真的很想在这个周末的会议上把它做好。谢谢大家!
你不能完全做你正在做的事情,你正在做执行函数的callCount(null, null, printCount)
。但是您需要传递一个函数作为回调。您想要的是以下内容,它捕获您想要的回调,并返回一个函数,该函数可以作为回调传递给您的api调用
var callCount = function(callback) {
return function(err, list) {
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);
}
}
然后
reqs.fs.readdir(dirName, callCount(printCount));
相关文章:
- 在Nodejs中堆叠异步回调事件的最佳方式
- 从多线程C++插件回调NodeJS Javascript函数
- TypeError:回调不是nodeJS中具有asyncJS的函数
- 在nodejs中将回调转换为promise
- 在NodeJS中传递回调函数变成Object
- NodeJS fs.readdr-将回调内部作为对象返回
- 如何在nodejs中使用回调或promise
- NodeJS回调范围问题
- NodeJS将一个额外的参数传递给回调
- 如何通过回调访问nodejs中的mongodb计数结果
- NodeJS异步-将参数传递给回调
- NodeJS异步模块:如何在回调中获取results对象
- socket.io (nodejs) 是否通过在回调完成期间阻止服务器来影响服务器性能
- nodejs:setImmediate 回调在 setTimeout(fn, 0) 之后执行,与 nodejs 文档描述
- 在循环完成 nodejs 请求之前执行回调
- 坚持使用nodeJS回调
- nodeJs 回调简单示例
- nodeJS中的承诺/承诺中的回调/执行顺序是不对的
- 在 NodeJS 中放置回调的语法和方法
- Socket.eemit在Android中带有回调-NodeJS