// wait — 等待指定毫秒數後繼續(最多 30 秒) // 注意:TinyGo/WASM 環境中 time.Sleep 可能不可用,改用 busy-wait 模擬 package main import ( "encoding/json" "io" "os" "time" ) type Input struct { Ms int `json:"ms"` Context map[string]interface{} `json:"context"` } func main() { raw, err := io.ReadAll(os.Stdin) if err != nil { writeError("failed to read stdin: " + err.Error()) return } var input Input if err := json.Unmarshal(raw, &input); err != nil { writeError("invalid input JSON: " + err.Error()) return } if input.Ms <= 0 { writeError("ms 必須大於 0") return } ms := input.Ms if ms > 30000 { ms = 30000 } time.Sleep(time.Duration(ms) * time.Millisecond) result := make(map[string]interface{}) for k, v := range input.Context { result[k] = v } result["waited_ms"] = ms out, _ := json.Marshal(map[string]interface{}{"success": true, "data": result}) os.Stdout.Write(out) } func writeError(msg string) { out, _ := json.Marshal(map[string]interface{}{"success": false, "error": msg}) os.Stdout.Write(out) }