mirror of
https://github.com/Brandon-Rozek/website.git
synced 2024-11-09 18:50:34 -05:00
Added standard method event subscribing
This commit is contained in:
parent
c45f48db17
commit
3d7c09645c
1 changed files with 11 additions and 6 deletions
|
@ -5,7 +5,7 @@ draft: false
|
||||||
tags: []
|
tags: []
|
||||||
---
|
---
|
||||||
|
|
||||||
It is common for larger applications to have modules that publishes and subscribes to events. This post will outline a couple ways to achieve this using [decorators](https://brandonrozek.com/blog/pydecorators/).
|
It is common for larger applications to have modules that publishes and subscribes to events. This post will outline a couple ways to achieve this using [decorators](https://brandonrozek.com/blog/pydecorators/) and standard methods.
|
||||||
|
|
||||||
## Single Event
|
## Single Event
|
||||||
|
|
||||||
|
@ -32,10 +32,11 @@ app = Application()
|
||||||
def test1(message):
|
def test1(message):
|
||||||
print("Function 1:", message)
|
print("Function 1:", message)
|
||||||
|
|
||||||
@app.subscribe
|
|
||||||
def test2(message):
|
def test2(message):
|
||||||
print("Function 2:", message)
|
print("Function 2:", message)
|
||||||
|
|
||||||
|
app.subscribe(test2)
|
||||||
|
|
||||||
app.emit('Hello World')
|
app.emit('Hello World')
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -54,11 +55,13 @@ from collections import defaultdict
|
||||||
class Application:
|
class Application:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.callbacks = defaultdict(list)
|
self.callbacks = defaultdict(list)
|
||||||
def on(self, event):
|
def on(self, event, func=None):
|
||||||
def subscribe(func):
|
def subscribe(func):
|
||||||
self.callbacks[event].append(func)
|
self.callbacks[event].append(func)
|
||||||
return func
|
return func
|
||||||
return subscribe
|
if func is None:
|
||||||
|
return subscribe
|
||||||
|
subscribe(func)
|
||||||
def emit(self, event, message):
|
def emit(self, event, message):
|
||||||
for callback in self.callbacks[event]:
|
for callback in self.callbacks[event]:
|
||||||
callback(message)
|
callback(message)
|
||||||
|
@ -77,9 +80,10 @@ Now let's subscribe a couple functions to `event1`
|
||||||
def test1(message):
|
def test1(message):
|
||||||
print("Function 1:", message)
|
print("Function 1:", message)
|
||||||
|
|
||||||
@app.on('event1')
|
|
||||||
def test3(message):
|
def test3(message):
|
||||||
print("Function 3:", message)
|
print("Function 3:", message)
|
||||||
|
|
||||||
|
app.on('event1', test3)
|
||||||
```
|
```
|
||||||
|
|
||||||
Now to subscribe a couple events to `event2`
|
Now to subscribe a couple events to `event2`
|
||||||
|
@ -90,9 +94,10 @@ Now to subscribe a couple events to `event2`
|
||||||
def test2(message):
|
def test2(message):
|
||||||
print("Function 2:", message)
|
print("Function 2:", message)
|
||||||
|
|
||||||
@app.on('event2')
|
|
||||||
def test4(message):
|
def test4(message):
|
||||||
print("Function 4:", message)
|
print("Function 4:", message)
|
||||||
|
|
||||||
|
app.on('event2', test4)
|
||||||
```
|
```
|
||||||
|
|
||||||
We can also subscribe to both events
|
We can also subscribe to both events
|
||||||
|
|
Loading…
Reference in a new issue