状态发布与读取
说明状态身份、作用域、快照和清理行为。
Documentation content is currently available in Simplified Chinese.
状态是可以持续读取的当前值。飞块收到 states.publish() 后保存最新快照,再把它交给有读取权限的流程或超级块。
#状态身份
状态由发布插件、来源 ID 和作用域目标共同定位。例如,全局音量只需要插件与来源 ID;计数器实例还需要设备、屏幕和块 ID。两个计数器使用同一个来源声明,但目标不同,因此保存不同的值。
发布时,宿主检查来源属于当前插件,并检查目标与声明的作用域一致。作用域字段和允许的组合见 stateSources。
#读取
visibility 控制值出现在哪些位置。流程可见的状态可以成为表达式积木;超级块可见的状态可以作为页面快照。超级块通过 stateSource 引用来源,并由 readAccess.widgets 允许读取。实例来源和同类型共享来源还会检查超级块类型是否匹配。
Schema 的类型、说明和枚举名称也会提供给编辑器。比如,字符串值 muted 可以显示为“已静音”,让用户选择可读的名称,运行时仍比较原始值。
#快照与清理
后一次发布替换前一次快照。来源尚未发布、插件停止或来源失效时,读取结果表示状态不可用;页面收到 null,可以显示占位内容。
插件状态保存在运行内存中。需要重启后恢复时,由插件保存业务数据,并在启动时重新发布。lifetime 用于确定清理时机,不会自动把值写入磁盘。生命周期字段见 StateSource.lifetime。