我一直在尝试学习 NodeJS 并学习更多用于后端开发目的。不过,我似乎无法将注意力集中在异步任务上,我这里有一个例子,我花了几个小时试图寻找解决方案。
app.get('/initialize_all_pictures', function(req, res){
var path = './images/';
fs.readdir(path, function(err, items){
if (err){
console.log("there was an error");
return;
}
console.log(items.length);
for(var i = 0; i<items.length; i++){
var photo = new Photo(path + items[i], 0, 0,Math.floor(Math.random()*1000))
photoArray.push(photo);
}
});
res.json({"Success" : "Done"});
});
目前,我有一个端点,它应该查看一个名为图像的目录并创建"照片"对象并将其推送到名为 PhotoArray 的全局数组中。它可以工作,除了 readdir 的函数总是被调用两次。
控制台.log将始终给出输出2阿拉伯数字
(目录中有两个项目)。
这是为什么呢?
刚刚弄清楚了问题所在。
我有一个 chrome 扩展程序,可以帮助我格式化 HTTP 请求中的 JSON 值。不幸的是,扩展实际上对端点进行了额外的调用,因此每当我将浏览器指向端点时,该函数最终都会被调用两次!