gpt4 book ai didi

javascript - Node 总是返回空数组

转载 作者:行者123 更新时间:2023-12-03 16:35:15 27 4
gpt4 key购买 nike

我在服务器中有以下获取请求...

var imageFiles = [];
var dir = 'public/img/';
fs.readdir(dir, function(err, files){
if (err) return console.error(err);
files.forEach(function(file) {
file = dir + file;
imageFiles.push(file)
});
});
res.send(imageFiles);
res.end();

imageFiles 总是以空数组的形式返回给angular。如果我 console.log(imageFiles) 在响应之前它也是空的。但是,如果我 console.log(files) 它们都在那里。我做错了什么!?

最佳答案

fs.readdir 是一个异步函数。它在回调函数传递文件中完成。

因此,当您执行 res.send 时,图像文件是空的。

var imageFiles = [];
...
fs.readdir(dir, function(err, files){
// files is populated here after readdir returns.
});

// this line executes before readdir returns
res.send(imageFiles);

你需要做类似的事情:

var imageFiles = [];
...
fs.readdir(dir, function(err, files){
...
res.send(imageFiles);
res.end();
});

欢迎使用异步编程:)

checkout async.js。它有助于理清回调 hell :

http://www.sebastianseilund.com/nodejs-async-in-practice

关于javascript - Node 总是返回空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22702005/

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