Node.js 异步“completer”函数中的回调是什么

Node.js 异步“completer”函数中的回调是什么,node.js,Node.js,我正在浏览下面的文档。 需要指出的是,如果completer函数接受两个参数,则可以异步调用它: function completer(linePartial, callback) { callback(null, [['123'], linePartial]); } 我没有得到什么是“回调”(我知道回调是在函数完成执行后调用的,但在这种情况下,回调函数的确切定义在哪里)这里? 是接受两个参数的独立函数吗 是否需要显式定义名为“callback”的函数 为什么callback的第一个参数

我正在浏览下面的文档。

需要指出的是,如果completer函数接受两个参数,则可以异步调用它:

function completer(linePartial, callback) {
  callback(null, [['123'], linePartial]);
}
我没有得到什么是“回调”(我知道回调是在函数完成执行后调用的,但在这种情况下,回调函数的确切定义在哪里)这里? 是接受两个参数的独立函数吗

是否需要显式定义名为“callback”的函数


为什么callback的第一个参数为null?

您不需要编写此回调函数,它只是作为补足符函数的参数提供给您。节点在内部某处创建函数

节点编写回调的方式希望在第一个位置给它一个错误,在第二个位置给它一个结果。这种(err,value)样式在Node中非常常见,其他库也经常使用它

下面是一个异步使用完成符的示例(我使用setTimeout在按下tab键和显示结果之间添加300毫秒的延迟)

如果您想在定义此完成器回调的节点中查看实际代码,请参见:

代码中检查是否需要回调的位置如下:

Callback是一个函数,执行完成后将调用它来通知结果,节点中的回调是“errbacks”,第一个参数是错误,第二个参数是结果,您可以用null调用它,因为没有错误。您能给我指出正确的文档吗
const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
  completer: (line, callback) => {
    const completions = '.help .error .exit .quit .q'.split(' ');
    const hits = completions.filter((c) => c.startsWith(line));

    setTimeout(
      () => callback(null, [hits.length ? hits : completions, line]),
      300,
    );
  },
});

rl.question('Press tab to autocomplete\n', (answer) => {
  console.log(`you entered: ${answer}! Well done.`);
  rl.close();
});