You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中function(err, result)回调是什么?prompt库result参数如何赋值?

prompt.get 方法的result参数赋值逻辑

Node.js 生态的异步API默认遵循错误优先回调约定:回调函数第一个参数为错误对象(操作成功时值为null),第二个参数为操作成功的返回结果,你所用的prompt库也符合该规范。

具体的参数赋值流程如下:

  • 当你调用prompt.get(['name'], 回调函数)时,prompt库不会立刻执行回调,会先把你传入的回调函数暂存在内部的任务队列中,同时启动终端输入流的监听逻辑,等待用户输入。
  • 若监听过程出现异常(比如终端输入流报错、用户按下Ctrl+C终止输入),prompt会生成对应的Error实例,直接调用你传入的回调,把Error实例赋值给第一个参数err,此时result为undefined。
  • 若用户正常输入内容并按下回车确认,prompt会先完成输入校验(你这段代码没有配置校验规则,会直接跳过该步骤),之后按照你传入的字段列表['name']构造结果对象:用户输入的内容会被赋值给该对象的name属性,这个组装好的对象就是result。之后prompt会调用你传入的回调,把第一个参数err设为null,第二个参数传入刚组装好的结果对象。
  • 回调被触发时,拿到的result就是prompt内部组装好的输入结果对象,你就可以通过result.name读取到用户输入的内容。

你可以参考如下简化版的伪代码,理解prompt.get的内部实现逻辑:

// 简化版prompt.get内部实现逻辑
prompt.get = function (fields, callback) {
  // 启动终端输入监听
  const inputStream = process.stdin;
  inputStream.resume();
  inputStream.once('data', (buffer) => {
    try {
      const userInput = buffer.toString().trim();
      // 按照传入的字段组装结果对象
      const result = {};
      fields.forEach(field => {
        result[field] = userInput;
      });
      // 操作正常,触发回调传入结果
      callback(null, result);
    } catch (err) {
      // 操作出错,触发回调传入错误
      callback(err);
    } finally {
      inputStream.pause();
    }
  })
}

内容的提问来源于stack exchange,提问作者shn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 20:27:02