refactor: 清掉指向不存在的 Dispatch 的文档,删掉为它留的死导出

Dispatch 在仓库里出现 7 次,全是注释和错误文案,没有任何实现。三处错误文案
写着「需要回调语义请用 Dispatch」——使用者按这句去查会找不到东西,真正该指的
是 WithCall。caller.go 那句还指向不存在的子包 jscriptx/dispatch。

连带删掉四个为它留的导出(全仓库零调用):

  Target                   统一 Script/Instance 的接口。有未导出方法 owner(),
                           外部实现不了;也没有任何函数以它为参数或返回值
  ErrUnsupportedSignature  哨兵错误,库自己从不产生它
  KindSignature            错误分类,全仓库唯一一次出现就是它自己的声明。
                           留着会让写 switch 的人为一个永不出现的分支写代码
  OverlayLoader.Loaders    零调用的 getter,连测试都没有

另外删掉 Instance.IdleFor 和 lastUsed 字段:它是给「空闲回收」用的,而
doc.go 明确写着本库不代管实例生命周期、没有空闲回收——字段注释和包文档直接
对立。代价是每次 Call 白付两次 time.Now() + atomic store。业务侧真要自己回收,
记一个时间戳是一行的事。

caller 的示例原来拿 ErrUnsupportedSignature 当哨兵,改成自己声明一个——
回调签名的约定本来就是调用方定的,哨兵该归调用方。

验证:framework-v2 和 lx-bid 都仍能编译。
This commit is contained in:
2026-09-10 15:15:10 +08:00
parent ad722b12f9
commit 9b3509ae29
7 changed files with 28 additions and 59 deletions
+7 -2
View File
@@ -2,6 +2,7 @@ package jscriptx_test
import (
"context"
"errors"
"fmt"
"log"
@@ -34,6 +35,10 @@ func ExampleCaller() {
next := func(v string) string { return "[" + v + "]" }
// 回调签名的约定是**调用方**定的(这里定成"1 个或 2 个形参"),
// 所以哨兵错误也归调用方声明,本库不提供。
errBadSignature := errors.New("回调签名不受支持")
// dispatch 按脚本函数的形状分派
dispatch := func(fn, value string) (string, error) {
var out string
@@ -47,7 +52,7 @@ func ExampleCaller() {
}
if res.IsEmpty() {
return fmt.Errorf("%w: 两个形参的回调必须返回结果",
jscriptx.ErrUnsupportedSignature)
errBadSignature)
}
return res.Into(&out)
@@ -70,7 +75,7 @@ func ExampleCaller() {
default:
return fmt.Errorf("%w: 形参个数必须是 1 或 2,当前是 %d",
jscriptx.ErrUnsupportedSignature, n)
errBadSignature, n)
}
})
return out, err