【发布时间】:2021-02-08 21:16:28
【问题描述】:
我正在尝试使用 Node.js/Javascript 从承诺中返回一个数组。
'server.js' 文件:
const db = require('./routes/queries');
function _seedings() {
db.seedlings("hockey")
.then(function(value) {
console.log('I returned this from seedlings: ' + value)
})
.catch(function(err) {
console.log('Caught an error in _seedings!', err);
});
return;
}
'queries.js' 文件:
function seedlings(_cat) {
return new Promise(function(resolve, reject) {
var _seeds = [];
var _directory = './galleries/pix/' + _cat;
fs.readdir(_directory, (err, files) => {
if (err) {
console.log(err);
} else {
files.forEach(file => {
if (path.extname(file) == ".jpg" || path.extname(file) == ".jpeg") {
_str = file.toString()
_seeds.push(_str);
} //extension is .jpg OR .jpeg
}) //forEach
} //if/else
}) //fs.readdir
resolve(_seeds);
}); //new promise
}
我已经使用与此类似的代码来查询数据库并在“解析”中返回结果。但是,使用此代码,我无法返回“_seeds”数组。似乎正在为其中的每个文件读取目录,但从那时起,要么没有填充数组,要么没有正确返回。非常感谢任何建议。
【问题讨论】:
-
readdir本身是异步的。您需要在其回调中resolve。
标签: javascript arrays promise