/*
* @Author: feng.han [email protected]
* @Date: 2024-03-02 10:33:38
* @LastEditors: feng.han [email protected]
* @LastEditTime: 2024-03-15 21:14:46
* @FilePath: /wasm_demo/main.go
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
package main
import (
"syscall/js"
"encoding/json"
"fmt"
"github.com/teambition/rrule-go"
)
func formateRules(this js.Value, args []js.Value) interface{} {
// 检查传递的参数是否正确
if len(args) < 2 {
return "参数不足"
}
// 解析JSON字符串为Go中的数据结构
var jsonData map[string]interface{}
if err := json.Unmarshal([]byte(args[0].String()), &jsonData); err != nil {
return "JSON解析错误"
}
rules, ok := jsonData["rules"].(string)
if !ok {
return "rules字段不是字符串类型"
}
s, err := rrule.StrToRRuleSet(rules)
if err != nil {
return fmt.Sprintf("解析RRuleSet错误:%s", err)
}
jsonBytes, err := json.Marshal(s.All())
if err != nil {
return fmt.Sprintf("序列化错误:%s", err)
}
// 调用回调函数,并传递日期JSON字符串
args[1].Invoke(js.ValueOf(string(jsonBytes)))
return nil
}
func main() {
// 创建通道
channel := make(chan struct{})
// 1.Go调用js的console.log()方法,在开发者工具的Consol面板中查看。
console := js.Global().Get("console")
// 2.js调用Go的asyncAndCallbak()方法, Go回调js。
js.Global().Set("formateRules", js.FuncOf(formateRules))
// 通道阻塞了main()方法,防止程序退出
// 如果程序退出
<-channel
console.Call("log", "exit")
}
没有合适的资源?快使用搜索试试~ 我知道了~
深入了解WebAssembly:编译与测试指南
共8个文件
sh:2个
wasm:1个
sum:1个
需积分: 5 0 下载量 105 浏览量
2024-03-15
21:52:47
上传
评论
收藏 904KB ZIP 举报
温馨提示
WebAssembly:编译与测试demo
资源推荐
资源详情
资源评论
收起资源包目录
wasm_test.zip (8个子文件)
go.mod 86B
go.sum 179B
wasm_exec.js 19KB
index.html 1KB
formateRules.wasm 3.07MB
compress.sh 598B
build.sh 539B
main.go 2KB
共 8 条
- 1
资源评论
feng.han
- 粉丝: 55
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功