Simple Event Emitter for Go Programming Language 1.18+.
$ go get github.com/attilabuti/eventemitter/v2@latest
For more information, please see the Package Docs.
package main
import (
"fmt"
"github.com/attilabuti/eventemitter/v2"
)
func main() {
// Creating an instance.
emitter := eventemitter.New()
// Event handler.
event := func(name string) {
fmt.Printf("Hello, %s!", name)
}
// Register an event listener.
emitter.AddListener("test_event", event)
// Emit event sync.
emitter.EmitSync("test_event", "World")
// Remove event listener.
emitter.RemoveListener("test_event", event)
}
func main() {
emitter := eventemitter.New()
event := func(name string) {
fmt.Printf("Hello, %s!", name)
}
emitter.AddListener("event", event)
emitter.AddListener("event", &event)
emitter.AddListener("event", func(name string) {
fmt.Printf("Hello, %s!", name)
})
}
func main() {
emitter := eventemitter.New()
event := func(name string) {
fmt.Printf("Hello, %s!", name)
}
emitter.AddListener("event", event)
emitter.AddListener("event", &event)
emitter.RemoveListener("event", event)
emitter.RemoveListener("event", &event)
}
func main() {
var wg sync.WaitGroup
wg.Add(1)
emitter := eventemitter.New()
emitter.AddListener("event", func(name string) {
defer wg.Done()
fmt.Printf("Hello, %s!", name)
})
emitter.Emit("event", "World")
wg.Wait()
}
func main() {
emitter := eventemitter.New()
emitter.AddListener("event", func(name string) {
fmt.Printf("Hello, %s!", name)
})
emitter.EmitSync("event", "World")
}
func main() {
emitter := eventemitter.New()
// Removes all listeners of the specified event.
emitter.AddListener("event", func(){})
emitter.AddListener("event", func(){})
emitter.RemoveAllListeners("event")
// Removes all listeners.
emitter.AddListener("event1", func(){})
emitter.AddListener("event2", func(){})
emitter.RemoveAllListeners()
}
Submit the issues if you find any bug or have any suggestion.
Fork the repo and submit pull requests.
This project is licensed under the MIT License.