服务 (Service)
Service
是抽象的服务基类。任何开发者都可以方便地基于 Service
类定义自己的服务。
为了提高灵活性,Service
类提供的所有方法都使用 symbol 作为属性名,以避免与子类的属性名冲突。你可以在 Context
或者 Service
的静态属性中找到这些属性名。
TIP
基于 Service
类定义服务并不是必须的。理论上你可以用任何可代理对象作为服务。
实例属性
service.ctx
- 类型:
Context
访问服务的上下文。
service[Context.filter]
- 类型:
(ctx: Context) => boolean
服务内置了上下文过滤器,以便根据隔离域过滤触发事件的上下文。
实例方法
new Service(ctx, name)
- ctx:
Context
上下文 - name:
string
服务名称
构造服务实例。
service[Service.init](ctx)
定义服务实例的初始化操作。该方法支持异步和迭代器,可用于绕开构造函数的限制。
service[Service.invoke](...args)
- args:
any[]
调用参数 - 返回值:
any
定义将服务视为函数调用时的行为。
WARNING
我们不建议滥用这个功能。在大多数情况下,直接调用服务实例的方法会更加直观。