支持在没有全局变量的情况下并行执行 JS 函数
作者: davedwwang创建于 2025年7月9日更新于 2025年7月9日
调用同一个 JS 函数时,会出现并发错误,多个 goroutine 同时调用该函数。以下是代码示例:
func IfJs() string {
return `function callIf(i) {
var g = i == 1;
if (g) {
i = i + 1;
}
return i;
}
`
}
func TestIfFuncJsParal(t *testing.T) {
javascriptVM := New()
_, err := javascriptVM.Run(IfJs())
require.NoError(t, err)
paral := 100
wg := sync.WaitGroup{}
wg.Add(paral)
for i := 0; i < paral; i++ {
go func() {
defer wg.Done()
f, err := javascriptVM.Get("callIf")
require.NoError(t, err)
_, err = f.Call(f, 1)
require.NoError(t, err)
}()
}
wg.Wait()
}
这里出现了以下错误:fatal error: concurrent map writes
描述:内容来源: robertkrimen/otto