summaryrefslogtreecommitdiff
path: root/components.go
blob: 6f59f58ccb3ef870905e6ffe6831066bb76241c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package main

import (
	"github.com/ewy1/pik/spool"
	"sync"
)

type ComponentList[T any] []T

func (c ComponentList[T]) RunAsync(fire func(T) error) {
	wg := sync.WaitGroup{}
	for _, i := range c {
		wg.Go(func() {
			err := fire(i)
			if err != nil {
				_, _ = spool.Warn("%v\n", err)
			}
		})
	}
	wg.Wait()
}

func (c ComponentList[T]) RunSync(fire func(T) error) {
	for _, i := range c {
		err := fire(i)
		if err != nil {
			_, _ = spool.Warn("%v\n", err)
		}
	}
}