求教,为什么在node中,循环遍历读取文件状态,在内部push进数组可以拿到数据,但是在forEach循环中打印数组为空。
发布于 1 个月前 作者 yangweixin1406 768 次浏览 来自 问答

userful.png

4 回复

因为 console.log 执行到的时候,写在回调里面的 arr.push 还没执行到

@hsiaosiyuan0 有什么方法可以在外部拿到 arr.push 的数据吗?

function readFilesStat(files, cb) {
  const arr = [];
  const x_done = () => files.length === arr.length && cb(arr.filter(s => s !== null));
  files.forEach(file => {
    fs.stat('some-prefix' + file, (err, stat) => {
      if(err) arr.push(null);
      else arr.push({/* custom stat obj */});
      x_done();
    });
  });
}
回到顶部