gpt4 book ai didi

javascript - 提供一个提供的 Node JS 回调我自己的自定义回调

转载 作者:行者123 更新时间:2023-12-03 08:22:33 24 4
gpt4 key购买 nike

首先,我想在这个伟大的线程之后我会解决这个问题:nodeJs callbacks simple example

但是,我仍然不确定如何继续。就像标题提示的那样:我需要一个回调,该回调已经有 Node 参数传递给它

代码:

    (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 的 Node 功能。和list自动地。我该如何解决这个问题?我只是想计算执行目录中的图像数量,并能够将该值存储在我的主函数中。

对于事件风格编程来说相当陌生。欢迎任何额外的阅读建议。那里有大量的内容,但我真的很想在本周末的 session 上启动并运行它。谢谢大家!

最佳答案

你不能完全完成你正在做的事情,你正在执行执行该函数的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));

关于javascript - 提供一个提供的 Node JS 回调我自己的自定义回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33684636/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com