Junior — Middle
Можете ли да објасните принцип рада приступа заснованог на догађајима и како се он користи у програмирању?
sobes.tech АИ
Одговор од АИ
Pristup zasnovan na događajima (event-driven) podrazumeva da program reaguje na određene događaje: promene stanja, akcije korisnika, poruke itd. Umesto sekvencijalnog izvršavanja koda, logika se gradi oko obrade ovih događaja.
U programiranju se to često realizuje generisanjem događaja (emit) i pretplatom na njih (subscribe/listen). Kada se dogodi događaj, pozivaju se odgovarajući handleri.
U Go jeziku, ovaj pristup se često implementira pomoću kanala (channels) i gorutina. Na primer, jedna gorutina može slati događaje u kanal, dok druga sluša taj kanal i reaguje na događaje.
Primer:
package main
import (
"fmt"
"time"
)
func eventProducer(events chan<- string) {
for i := 1; i <= 5; i++ {
events <- fmt.Sprintf("Događaj %d", i)
time.Sleep(time.Second)
}
close(events)
}
func eventConsumer(events <-chan string) {
for event := range events {
fmt.Println("Obrada", event)
}
}
func main() {
events := make(chan string)
go eventProducer(events)
eventConsumer(events)
}
Ovaj pristup povećava fleksibilnost i skalabilnost aplikacija, posebno u sistemima sa asinhronim obradom podataka.