You need to enable JavaScript to run this app. 如何定义接收配置与onSuccess/onError回调的JavaScript类
优惠活动
大模型
产品
解决方案
定价
更多

如何定义接收配置与onSuccess/onError回调的JavaScript类

符合要求的完整实现
class User {
  constructor(params) {
    // 合并默认配置和用户传入配置,回调默认是空函数避免调用报错
    const defaultOptions = {
      onSuccess: () => {},
      onError: () => {}
    }
    Object.assign(this, defaultOptions, params)
  }

  static create(params) {
    return new User(params)
  }

  showForm() {
    try {
      // 此处填写showForm实际业务逻辑,比如渲染表单、参数校验等
      console.log(`展示用户表单:姓名${this.name},邮箱${this.email},年龄${this.age}`)
      
      // 逻辑执行成功,触发成功回调,可传入自定义返回值
      this.onSuccess({
        code: 200,
        msg: '表单展示成功',
        userInfo: {
          name: this.name,
          email: this.email,
          age: this.age
        }
      })
    } catch (err) {
      // 逻辑执行报错,触发失败回调,传入错误信息
      this.onError({
        code: 500,
        msg: '表单展示失败',
        error: err
      })
    }
  }
}

实现说明
  • 构造函数内先定义了回调的默认空函数,就算用户调用时没有传入onSuccess/onError,执行时也不会出现「函数未定义」的报错
  • 用Object.assign把所有传入的业务参数、回调都直接挂载到实例上,不需要额外单独存储params对象,调用更方便
  • showForm等实例方法内部完成业务逻辑后,直接调用this.onSuccess/this.onError就能触发用户传入的自定义回调,支持传入任意响应参数给回调使用

调用测试

按你提供的写法调用即可正常触发回调:

let user = User.create({
  name: 'name_here',
  email: 'user@email.com',
  age: 37,
  onSuccess: (response) => {
    alert("onSuccess: " + response.msg);
  },
  onError: (error) => {
    alert("error: " + error.msg);
  }
})
// 调用后会先打印表单信息,然后弹出onSuccess的提示
user.showForm()

可选优化点
  • 可以在构造函数内增加必填参数校验,比如判断name/email是否为空,不符合要求直接抛出错误触发onError
  • 如果有多个实例方法需要触发回调,统一封装一个触发回调的工具方法,避免重复写判断逻辑

内容的提问来源于stack exchange,提问作者Adedeji Sikiru Da Webcoded

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 02:42:03