JSFiddle - React, Tailwind, and code Playground
CSS
using System;
namespace wildert
{
public class Metronome
{
public event TickHandler Tick;
public EventArgs e = null;
public delegate void TickHandler(Metronome m, EventArgs e);
public void Start()
{
while (true)
{
System.Threading.Thread.Sleep(3000);
if (Tick != null)
{
Tick(this, e);
}
}
}
}
public class Listener
{
public void Subscribe(Metronome m)
{
m.Tick += new Metronome.TickHandler(HeardIt);
}
private void HeardIt(Metronome m, EventArgs e)
{
System.Console.WriteLine("HEARD IT");
}
}
class Test
{
static void Main()
{
Metronome m = new Metronome();
Listener l = new Listener();
l.Subscribe(m);
m.Start();
}
}
}
JavaScript
class Button{
constructor() {
this.callbacks = [];
}
addListener(callback, ctx) {
this.callbacks.push([callback, ctx]);
}
click() {
this.callbacks.forEach(([callback, ctx]) => {
callback.call(ctx, 1, 2, 3);
});
}
}
let button = new Button();
class Person{
constructor() {
this.age = 1;
button.addListener(this.incAge, this);
}
incAge() {
this.age++;
}
}
let a = new Person();
let b = new Person();
button.click();
console.log(a.age);