You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
711 B
39 lines
711 B
// Package utils
|
|
// @Time:2023/08/24 06:36
|
|
// @File:jsRun.go
|
|
// @SoftWare:Goland
|
|
// @Author:feiyang
|
|
// @Contact:TG@feiyangdigital
|
|
|
|
package utils
|
|
|
|
import (
|
|
"fmt"
|
|
js "github.com/dop251/goja"
|
|
)
|
|
|
|
type JsUtil struct{}
|
|
|
|
func (j *JsUtil) JsRun(funcContent []string, params ...any) any {
|
|
vm := js.New()
|
|
_, err := vm.RunString(funcContent[0])
|
|
if err != nil {
|
|
return err
|
|
}
|
|
jsfn, ok := js.AssertFunction(vm.Get(funcContent[1]))
|
|
if !ok {
|
|
return fmt.Errorf("执行函数失败")
|
|
}
|
|
jsValues := make([]js.Value, 0, len(params))
|
|
for _, v := range params {
|
|
jsValues = append(jsValues, vm.ToValue(v))
|
|
}
|
|
result, err := jsfn(
|
|
js.Undefined(),
|
|
jsValues...,
|
|
)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return result
|
|
}
|
|
|