JavaScript
31.9K subscribers
1.01K photos
9 videos
33 files
697 links
A resourceful newsletter featuring the latest and most important news, articles, books and updates in the world of #javascript πŸš€ Don't miss our Quizzes!

Let's chat: @nairihar
Download Telegram
What is the output?
Anonymous Quiz
49%
2 1 3
29%
2 1 4
16%
3 1 4
7%
3 2 3
πŸ‘4❀2πŸ”₯1
CHALLENGE

const promise1 = Promise.resolve('first');
const promise2 = new Promise(resolve => {
resolve('second');
});

const promise3 = Promise.resolve().then(() => 'third');

async function test() {
console.log('start');

const result1 = await promise1;
console.log(result1);

const result2 = await promise2;
console.log(result2);

const result3 = await promise3;
console.log(result3);

console.log('end');
}

test();
❀3
Is there a difference between the previous code (red) and the new one (green) ?

Actually, there is 35second difference 😠

The previous code was, on every loop, creating a new object, always deallocating and reallocating memory, while the second example creates one object (a cache) and save each item into it.

Eduard KrivΓ‘nek
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘7πŸ”₯4❀3
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
🀟 How We Migrated Our Rush.js Monorepo to Node Type Stripping

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
πŸ‘‘ Cronicle: Cron with a Web Front End

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
CHALLENGE

const arr = new Array(1000000).fill(0).map((_, i) => i);
const results = [];

function method1() {
return arr.filter(x => x % 2 === 0).map(x => x * 2).slice(0, 3);
}

function method2() {
const result = [];
for (let i = 0; i < arr.length && result.length < 3; i++) {
if (arr[i] % 2 === 0) {
result.push(arr[i] * 2);
}
}
return result;
}

console.log(method1().join(','));
console.log(method2().join(','));
What is the output?
Anonymous Quiz
12%
0,2,4
57%
0,4,8 0,4,8
19%
2,4,6
11%
0,4,8
❀1πŸ‘1πŸ”₯1
😈 Sam Rose has put together a fantastic illustrated introduction to Big O notation, along with JavaScript examples. If you've ever wondered what O(1), O(log n), etc. mean, this is a great primer.
Please open Telegram to view this post
VIEW IN TELEGRAM
❀5πŸ‘1πŸ”₯1