node环境下遍历文件夹时怎么做到每次输出前间隔一秒?
node环境下,我有一个包含图片的文件夹,下面还有子文件夹。我的目标是从根文件夹遍历,每遇到一个文件,输出文件名,然后停顿一秒,再遍历输出下一个文件。
我想到的方法是利用generator函数遍历文件,然后setInterval()每隔一秒手动触发interator的next。设想的代码如下:
const fs = require('fs')
const path = require('path')
function* walk(f) {
let stats = fs.statSync(f)
if (stats.isFile()) {
yield f
} else if (stats.isDirectory()) {
fs.readdirSync(f)
.map(x => path.resolve(f, x))
.forEach(x => walk(x))
}
}
let it = walk('d:\\图片')
setInterval(function () {
let imgName = it.next().value
console.log(imgName)
}, 1000)
但是,这段代码只能用来遍历一层的文件夹。当递归调用时,这样就会报错。后面就不知道该怎么写了。
是不是应该用async/await写啊?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不管是yield 还是 promise 还是 async/await 都可以实现
如果使用 yield 可以参考下面的代码
搞个输出节流就得了嘛。 不会写直接 https://www.lodashjs.com/docs...