rl[Symbol.asyncIterator]()


创建一个 AsyncIterator 对象,用于将输入流中的每一行作为字符串进行迭代。此方法允许通过 for await...of 循环异步迭代 InterfaceConstructor 对象。

🌐 Create an AsyncIterator object that iterates through each line in the input stream as a string. This method allows asynchronous iteration of InterfaceConstructor objects through for await...of loops.

输入流中的错误不会被转发。

🌐 Errors in the input stream are not forwarded.

如果循环通过 breakthrowreturn 终止,rl.close() 将被调用。换句话说,遍历一个 InterfaceConstructor 总是会完全消耗输入流。

🌐 If the loop is terminated with break, throw, or return, rl.close() will be called. In other words, iterating over a InterfaceConstructor will always consume the input stream fully.

性能不如传统的 'line' 事件 API。对于对性能敏感的应用,请使用 'line'

🌐 Performance is not on par with the traditional 'line' event API. Use 'line' instead for performance-sensitive applications.

async function processLineByLine() {
  const rl = readline.createInterface({
    // ...
  });

  for await (const line of rl) {
    // Each line in the readline input will be successively available here as
    // `line`.
  }
} 

readline.createInterface() 一旦被调用就会开始消耗输入流。在创建接口和异步迭代之间进行异步操作可能会导致遗漏行。