Events
Decouple application logic with a pub-sub event dispatcher.
The event system provides a simple pub-sub dispatcher for decoupling application components.
Creating a Dispatcher
import "github.com/RAiWorks/RapidGo/v2/core/events"
dispatcher := events.NewDispatcher()
Listening for Events
dispatcher.Listen("user.registered", func(payload interface{}) {
user := payload.(*models.User)
// Send welcome email, create default settings, etc.
mailer.Send(user.Email, "Welcome!", welcomeHTML)
})
dispatcher.Listen("order.placed", func(payload interface{}) {
order := payload.(*models.Order)
// Process payment, send confirmation, etc.
})
Dispatching Events
// Async — handlers run in goroutines
dispatcher.Dispatch("user.registered", user)
// Sync — handlers run sequentially
dispatcher.DispatchSync("order.placed", order)
Checking Listeners
if dispatcher.Has("user.registered") {
dispatcher.Dispatch("user.registered", user)
}