fsPromises.watch(filename[, options])
filename<string> | <Buffer> | <URL>options<string> | <Object>persistent<boolean> 指示进程是否应在监视文件时继续运行。默认值:true。recursive<boolean> 指示是否应监视所有子目录,还是仅监视当前目录。当指定目录时适用,并且仅在支持的平台上生效(参见 注意事项)。默认值:false。encoding<string> 指定传递给监听器的文件名所使用的字符编码。默认值:'utf8'。signal<AbortSignal> 一个<AbortSignal>用来指示观察者何时应该停止。maxQueue<number> 指定在每次迭代返回的 <AsyncIterator> 之间排队的事件数量。默认值:2048。overflow<string> 当待排队的事件数量超过maxQueue允许的数量时,可以选择'ignore'或'throw'。'ignore'表示溢出的事件会被丢弃并发出警告,而'throw'表示抛出异常。默认值:'ignore'。
- 返回:<AsyncIterator> 具有以下属性的对象:
返回一个异步迭代器,用于监视 filename 的变化,其中 filename 可以是文件或目录。
🌐 Returns an async iterator that watches for changes on filename, where filename
is either a file or a directory.
const { watch } = require('node:fs/promises');
const ac = new AbortController();
const { signal } = ac;
setTimeout(() => ac.abort(), 10000);
(async () => {
try {
const watcher = watch(__filename, { signal });
for await (const event of watcher)
console.log(event);
} catch (err) {
if (err.name === 'AbortError')
return;
throw err;
}
})(); 在大多数平台上,每当目录中出现或消失一个文件名时,都会触发 'rename'。
🌐 On most platforms, 'rename' is emitted whenever a filename appears or
disappears in the directory.
关于 fs.watch() 的所有 注意事项 也同样适用于 fsPromises.watch()。
🌐 All the caveats for fs.watch() also apply to fsPromises.watch().