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().】