π5β€3π₯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
  What is the output?
  Anonymous Quiz
    21%
    start first end second third
      
    33%
    start end first second third
      
    39%
    start first second third end
      
    7%
    first second third start end
      
    π₯5π€2
  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
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
  π12π₯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');β€6π€3
  What is the output?
  Anonymous Quiz
    38%
    Hello Sarah Welcome Sarah
      
    18%
    Welcome Sarah
      
    38%
    Hello Sarah Welcome Sarah Hello John Welcome John
      
    5%
    Hello Sarah
      
    β€8π2π₯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
  π₯7β€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
  β€5π3
  Please open Telegram to view this post
    VIEW IN TELEGRAM
  β€5π€3π2π₯2
  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');β€8π€5π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
  β€6π5π₯2
  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(','));
β€2π1π₯1
  Please open Telegram to view this post
    VIEW IN TELEGRAM
  β€11π4π₯1
  CHALLENGE
const obj = { a: 1, b: { c: 2 } };
const frozen = Object.freeze(obj);
frozen.a = 99;
frozen.b.c = 88;
frozen.d = 77;
const sealed = Object.seal({ x: 10, y: 20 });
sealed.x = 30;
sealed.z = 40;
delete sealed.y;
console.log(obj.a, obj.b.c, obj.d);
console.log(sealed.x, sealed.y, sealed.z);β€2
  What is the output?
  Anonymous Quiz
    28%
    99 88 77, 30 20 40
      
    42%
    1 88 undefined, 30 20 undefined
      
    21%
    1 2 undefined, 10 20 undefined
      
    9%
    99 2 77, 30 undefined 40
      
    β€5π2π₯2
  CHALLENGE
class StateMachine {
  constructor() {
    this.state = 'idle';
    this.transitions = {
      idle: { start: 'running' },
      running: { pause: 'paused', stop: 'idle' },
      paused: { resume: 'running', stop: 'idle' }
    };
  }
  
  transition(action) {
    const validTransitions = this.transitions[this.state];
    if (validTransitions && validTransitions[action]) {
      this.state = validTransitions[action];
      return true;
    }
    return false;
  }
}
const machine = new StateMachine();
console.log(machine.transition('pause'));
console.log(machine.state);
console.log(machine.transition('start'));
console.log(machine.state);π€©2π1
  What is the output?
  Anonymous Quiz
    24%
    true paused false paused
      
    44%
    false idle true running
      
    20%
    false paused true running
      
    12%
    true running false running
      
    β€2π2π₯2
  