gpt4 book ai didi

Node.js fs.readdir、fs.stat

转载 作者:太空宇宙 更新时间:2023-11-03 22:00:05 30 4
gpt4 key购买 nike

我正在学习一些教程,但无法理解为什么这一行“self.only_dirs.push(files[i]);”导致有关它“未定义”的错误。这肯定是一个变量范围问题,但我尝试过的都没有成功。我需要如何声明变量以便这些嵌入的回调函数能够识别它们?

function load_album_list(callback, callback2)
{
var self = this;
fs.readdir
(
'albums',
function (err, files)
{
if(err)
{
callback(err, null);
return;
}

var only_dirs = [];
var remaining = files.length;
for (var i = 0; i < files.length; i++)
{

fs.stat("albums/" + files[i],
function(err, stats)
{
if(stats.isDirectory())
{
self.only_dirs.push(files[i]);
}
console.log("remaining: " + self.remaining);
self.remaining -= 1;
if (self.remaining == 0)
callback(null, self.only_dirs);
}
);

}

callback(null, only_dirs);
}
);
}

最佳答案

function load_album_list(callback, callback2)
{
var self = this;
self.only_dirs = []; //<----- declare only_dirs in this scope
fs.readdir
(
'albums',
function (err, files)
{
if(err)
{
callback(err, null);
return;
}

//var only_dirs = []; <--- remove this reference
var remaining = files.length;
for (var i = 0; i < files.length; i++)
{

fs.stat("albums/" + files[i],
function(err, stats)
{
if(stats.isDirectory())
{
self.only_dirs.push(files[i]);
}
console.log("remaining: " + self.remaining);
self.remaining -= 1;
if (self.remaining == 0)
callback(null, self.only_dirs);
}
);

}

callback(null, self.only_dirs);
}
);
}

关于Node.js fs.readdir、fs.stat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28554046/

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