Compose execution observers in order

This commit is contained in:
2026-11-14 01:26:49 +00:00
parent a07e95fd17
commit 23fb55f9df
4 changed files with 108 additions and 2 deletions

View File

@@ -0,0 +1,19 @@
package observation
// Compose copies and synchronously invokes non-nil observers in order.
func Compose[T any, F ~func(T)](observers ...F) F {
selected := make([]F, 0, len(observers))
for _, observer := range observers {
if observer != nil {
selected = append(selected, observer)
}
}
if len(selected) == 0 {
return nil
}
return func(event T) {
for _, observer := range selected {
observer(event)
}
}
}