优化代码

pull/51/head
肥羊 2 years ago
parent faa365b658
commit a4a1649fe0
  1. 23
      Golang/utils/jsRun.go

@ -10,12 +10,31 @@ package utils
import ( import (
"fmt" "fmt"
js "github.com/dop251/goja" js "github.com/dop251/goja"
"sync"
) )
type JsUtil struct{} type JsUtil struct {
pool sync.Pool
}
func (j *JsUtil) getVm() *js.Runtime {
v := j.pool.Get()
if v != nil {
vm := v.(*js.Runtime)
vm.Set("global", vm.NewObject()) // 重置或清理全局对象
return vm
}
return js.New()
}
func (j *JsUtil) putVm(vm *js.Runtime) {
vm.Set("global", nil) // 清除全局对象
j.pool.Put(vm)
}
func (j *JsUtil) JsRun(funcContent []string, params ...any) any { func (j *JsUtil) JsRun(funcContent []string, params ...any) any {
vm := js.New() vm := j.getVm()
defer j.putVm(vm)
_, err := vm.RunString(funcContent[0]) _, err := vm.RunString(funcContent[0])
if err != nil { if err != nil {
return err return err

Loading…
Cancel
Save