CHALLENGE
class EventBus {
constructor() {
this.events = new Map();
}
on(event, callback) {
if (!this.events.has(event)) {
this.events.set(event, []);
}
this.events.get(event).push(callback);
}
emit(event, data) {
if (this.events.has(event)) {
this.events.get(event).forEach(callback => callback(data));
}
}
}
const bus = new EventBus();
bus.on('user', name => console.log(`Hello ${name}`));
bus.on('user', name => console.log(`Welcome ${name}`));
bus.emit('user', 'Sarah');
bus.emit('admin', 'John');
β€3π€2
What is the output?
Anonymous Quiz
41%
Hello Sarah Welcome Sarah
17%
Welcome Sarah
35%
Hello Sarah Welcome Sarah Hello John Welcome John
6%
Hello Sarah
β€7π1π₯1
Since v23.6 (and in LTS since v22.18.0), Node has supported running (most) TypeScript code by stripping the types out first. The Calm team was excited about the potential for improving productivity and DX, and set a migration in process. Hereβs a look at the challenges encountered and what the end results were.
Stuart Dotson (Calm)
Please open Telegram to view this post
VIEW IN TELEGRAM
π₯5β€2π1
CHALLENGE
const original = { a: 1, b: { c: 2 } };
const shallow = { ...original };
const deep = JSON.parse(JSON.stringify(original));
shallow.a = 10;
shallow.b.c = 20;
deep.a = 100;
deep.b.c = 200;
const frozen = Object.freeze({ x: 1, y: { z: 2 } });
frozen.x = 99;
frozen.y.z = 99;
console.log(original.a, original.b.c, frozen.x, frozen.y.z);
β€2π₯2
β€4π2
Please open Telegram to view this post
VIEW IN TELEGRAM
β€4π₯2π1π€1
CHALLENGE
async function fetchData() {
console.log('1');
return Promise.resolve('data');
}
async function processData() {
console.log('2');
const result = await fetchData();
console.log('3');
return result;
}
console.log('4');
processData().then(() => console.log('5'));
console.log('6');
β€4π2π€2
Describing itself as βa fancy cron replacementβ, Cronicle is a distributed task scheduler and runner, built around a Node app with a web based UI. GitHub repo.
Joseph Huckaby
Please open Telegram to view this post
VIEW IN TELEGRAM
π5β€3π₯1