【发布时间】:2021-12-14 01:52:32
【问题描述】:
我想创建一个 while 循环,只要超时完成或满足条件,它就会中断
async checkFile (filePath) {
const readDir = fs.readdirSync(filePath,'utf-8')
while(true) {
if(readDir === filename) {
break;
}
}
}
【问题讨论】:
-
将
Promise.any()与两个 Promise 一起使用,一个是“条件满足”,另一个是“时间到了”。Promise.any()将在其中任何一个完成后解析。 -
什么超时?什么条件 -
true和readDir在你的循环中是不变的?filename是什么? -
...为什么异步方法(OP的超时,建议的承诺)无论如何当阅读方法建议时...
fs.readdirSync? ...怎么样...filenames = fs.readdirSync(filePath,'utf-8'); filenames.forEach(file => console.log(file));(我不是 node.js 文件系统专家) -
您的第一行在
async之后缺少function关键字。除非它是一个类的方法。有三种方法可以完成您的任务,使用在找到文件或超时时解决的承诺。如果您的循环中有非阻塞操作,您可以设置超时来更改 while 条件。您还可以在循环内部进行检查,以查看循环开始时是否已经过去。 -
也许 OP 也考虑调查Node's File system documentation
标签: javascript while-loop