RapidGo
No results found

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)
}