47

HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro [email protected] ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,
Page 2: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

HOLA!

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

Soy Aida Albarrán

@aidaispro [email protected]

Page 3: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

¿DE QUÉ VAMOS A HABLARHOY? PRIMITIVE OBSESSION / AIDA ALBARRÁN @

aidaispro

1. Javascript. No sabes Javascript, John Snow.2. Clean Code. El arte de programar.3. Testing. Para refactorizar, crear tests debes.4. Asincronía. Esa gran “amiga”.

Page 4: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

COMIENZOS

Page 5: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

NO SABES JAVASCRIPT, JOHN SNOWPrimer encuentro con la realidad

1 JAVASCRIPT

CLEAN CODE

TESTING

2

3

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaisproASINCRONÍA4

Page 6: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

OBJETIVO FUNCIONESBEFORE:

handleResponse(firstList){

const getAllPokeDatas = firstList.results.map(poke =>

this.getPokemonByUrl(poke.url));

}

Page 7: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

OBJETIVO FUNCIONESAFTER:

handleResponse(firstList){

firstList.results.forEach(poke =>

this.getPokemonByUrl(poke.url));

}

Page 8: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

TIPOS DE FUNCIONES PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

QUERY ACTION (o COMMAND)

Page 9: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

OBJETIVO FUNCIONES

AFTER:

BEFORE:

handleResponse(firstList){

firstList.results.forEach(poke => this.getPokemonByUrl(poke.url));

}

handleResponse(firstList){

firstList.results.forEach(poke => this.setPokemonByUrl(poke.url));

}

Page 10: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

COMMAND QUERY SEPARATION (CQS)

EL ARTE DE SEPARAR

Page 11: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

EDUCACIÓN PARA LA CIUDADANÍA EN JAVASCRIPT

Maléfica

Page 12: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

SON CIUDADANOS DE PRIMERA CLASE PORQUE PUEDEN SER...

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

DEVUELTAS por otras funciones

ALMACENADAS en variables

usadas como PARÁMETROS

Page 13: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

FUNCIONES COMO CIUDADANOS DE PRIMERA

function assignClass(className) {

return function(element) { //Se devuelve esta función

document.getElementbyId(element).classList.add(className);

}

}

const hideElement = assignClass('hide'); // Que se almacena en

esta variable

hideElement('myId'); //Ejecuto la función almacenada

Page 14: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

FUNCIONES COMO CIUDADANOS DE PRIMERAfunction askForImage(callback) {

const request = new XMLHttpRequest();

request.open('GET',

'https://api.thedogapi.com/v1/images/search?size=full' );

request.addEventListener('load', function() {

const response = JSON.parse(request.responseText)[0].url;

callback(response);

});

request.send();

}

function showPicture() {

askForImage(function(image) {

document.body.innerHTML = '<img src="'+ image + '">';

})

}

showPicture()

Page 15: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

FUNCIONES COMO CIUDADANOS DE PRIMERA CLASE

SIRVEN IGUAL PARA UN ROTO QUE PARA UN “DESCOSÍO”

Page 16: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

EL ARTE DE PROGRAMARCódigo limpio y sin malos olores

2

JAVASCRIPT

CLEAN CODE

TESTING

1

3

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaisproASINCRONÍA4

Page 17: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

Any fool can write code that a computer can understand. Good programmers write code that humans can understand.

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

—Martin Fowler.

Page 18: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

SINGLE RESPONSIBILITY

DEPENDENCY INVERSION

PRINCIPIOS S.O.L.I.D.

Page 19: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

SOY UNA ARTISTA

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

VISTA

LÓGICA DE NEGOCIO / MODELO

PERSISTENCIA DE DATOS

CONTROLADOR

Page 20: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

export interface TweetInfo {

tweetid: TweetIdClass

screen_name: string

followers: number

retweets: number

favs: number

date: string

link: string

text: string

}

Page 21: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

PRIMITIVE OBSESSION SMELL

CODE SMELLS QUE NO HUELEN MUY BIEN

Page 22: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

export interface TweetInfo {

tweetid: TweetIdClass

screen_name: string

followers: number

retweets: number

favs: number

date: string

link: string

text: string

}

Page 23: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

VALUE OBJECT

Objetos que lo valen. Tanto es así, que se diferencian unos de otros por su valor, pero conservan la misma estructura y además son inmutables.

Page 24: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

interface PersonProps {

name: string;

age: number;

}

VALUE OBJECT APLICADO

Page 25: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

import { valueObject, type } from "valueobject.ts";

class Person extends valueObject({

name: type.string,

age: type.number,

}) {

constructor(args: PersonProps) {

super(args);

if (!this.validateAge()) throw new Error('INVALID_AGE');

}

validateAge(): boolean {

if (this.age < 0) return false;

return true;

}

}

VALUE OBJECT APLICADO

Page 26: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

function printPerson(person: Person) {

console.log('Se ha creado:', person);

}

const personData = {

name: "Aida",

age: 30

};

const person = new Person(personData);

printPerson(person);

VALUE OBJECT APLICADO

Page 27: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

function printPerson(person: Person) {

console.log('Se ha creado:' , person);

}

const personData = {

name: "Aida",

age: -20

};

const person = new Person(personData);

printPerson(person);

VALUE OBJECT APLICADO

Page 28: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

export interface TweetInfo {

tweetid: TweetIdClass

screen_name: string

followers: number

retweets: number

favs: number

date: string

link: string

text: string

}

VALUE OBJECT APLICADO

Page 29: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PARA REFACTORIZAR, CREAR TESTS DEBESO cómo el testing me ayudó a mejorar mi código.3

JAVASCRIPT

CLEAN CODE

TESTING

1

2

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaisproASINCRONÍA4

Page 30: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

TESTING Y REFACTORComportamiento MOBILE

Page 31: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

TESTING Y REFACTORComportamiento DESKTOP

Page 32: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

TESTING Y REFACTORcontext('Active and not active elements management' , () => {

function checkIfElementsAreActive(listItem, itemContainer, itemSubmenu) {

expect(listItem.getAttribute('aria-expanded' )).to.be.equal('true');

expect(listItem.querySelector('menu-item').className).to.contain('active');

expect(itemContainer.className).to.contain('active');

expect(itemSubmenu.className).to,contain('active');

}

function checkIfElementsAreNotActive(listItem, itemContainer, itemSubmenu) {

expect(listItem.getAttribute('aria-expanded' )).to.be.equal('false');

expect(listItem.querySelector('menu-item').className).not.to.contain('active');

expect(itemContainer.className).not.to.contain('active');

expect(itemSubmenu.className).not.to,contain('active');

}

//...

Page 33: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

TESTING Y REFACTORit ('should close active menu elements after click ', (done) => {

flush(() => {

const currentItem = sut.shadowRoot.querySelectorAll('menu-item')[1];

const mockEvent = { currentTarget : currentItem.parentNode,};

sut.toggleMenuItem(mockEvent);

const listItem = currentItem.parentNode;

const itemContainer = listItem.parentNode;

const itemSubmenu = itemContainer.querySelector('submenu').shadowRoot...

checkIfElementsAreActive(listItem, itemContainer, itemSubmenu);

sut.closeSubmenu();

checkIfElementsAreNotActive(listItem, itemContainer, itemSubmenu);

done();

});

});

Page 34: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

TESTING Y REFACTORMomento de refactorizar

Page 35: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

TDD

Deja que los test “conduzcan” y controlen tus funciones.

Page 36: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

ASINCRONÍAEsa gran amiga a la que todos los desarrolladores de Javascript “amamos”.

4

JAVASCRIPT

CLEAN CODE

TESTING

1

2

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaisproASINCRONÍA

3

Page 37: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

it ('should close active menu elements after click ', (done) => {

flush(() => {

const currentItem = sut.shadowRoot.querySelectorAll('menu-item')[1];

const mockEvent = { currentTarget : currentItem.parentNode,};

sut.toggleMenuItem(mockEvent);

const listItem = currentItem.parentNode;

const itemContainer = listItem.parentNode;

const itemSubmenu = itemContainer.querySelector('submenu').shadowRoot...

checkIfElementsAreActive(listItem, itemContainer, itemSubmenu);

sut.closeSubmenu();

checkIfElementsAreNotActive(listItem, itemContainer, itemSubmenu);

done();

});

});

Page 38: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

LENGTHEN ARRAY:

EN STRING:

EN NUMBER Y OBJECT:

const myArray = ['Besis', 'de', 'fresi'];

console.log(myArray.length); // 3

const myText = 'Besis';

console.log(myText.length); // 5

const myNumber = 4;

console.log(myNumber.length); // undefined

const myObject = {};

console.log(myObject.length); // undefined

Page 39: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

LENGTHEN FUNCTION:

function myFunction() {

// Hago cosas

}

console.log(myFunction.length); // 0

function myFunctionWithArguments(name, age, phone)

{

// Hago cosas

}

console.log(myFunctionWithArguments .length); // 3

Page 40: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

it ('should close active menu elements after click ', (done) => {

flush(() => {

const currentItem = sut.shadowRoot.querySelectorAll('menu-item')[1];

const mockEvent = { currentTarget : currentItem.parentNode,};

sut.toggleMenuItem(mockEvent);

const listItem = currentItem.parentNode;

const itemContainer = listItem.parentNode;

const itemSubmenu = itemContainer.querySelector('submenu').shadowRoot...

checkIfElementsAreActive(listItem, itemContainer, itemSubmenu);

sut.closeSubmenu();

checkIfElementsAreNotActive(listItem, itemContainer, itemSubmenu);

done();

});

});

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

Page 41: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

LENGTH

Una propiedad con más usos que el aceite de oliva virgen extra.

Page 42: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

V8

ECMAScript

SETTIMEOUT Y SETINTERVAL

- Navegadores- Nodejs

SpiderMonkey ...

Page 43: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

MOTOR JS + APIS DEL NAVEGADOR

El extra que te ofrecen los navegadores para hacer tu experiencia con Javascript más placentera....

Page 44: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

WEB APIS

Fn

MOTOR JS

FIFO

STACK/PILA

Fn

Fn

HEAP

DOM

SetTimeout..

AJAX

EVENT LOOP

X...

CALLBACKS QUEUEonClick cb cb cb

EVENT LOOP EN NAVEGADORES

Page 45: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

setTimeout(function firstCallback() {

console.log('Primer log de SETTIMEOUT');

}, 0);

console.log('Primer log de FUERA');

setTimeout(function secondCallback() {

console.log('Segundo log de

SETTIMEOUT');

}, 0);

console.log('Segundo log de FUERA');

EVENT LOOP EN NAVEGADORES

STACK/PILA

setTimeout (firstCallback)

WEB APIS

EVENT LOOP

X...

CALLBACKS QUEUE//Primer log de FUERA

//Segundo log de FUERA

//Primer log de SETTIMEOUT

//Segundo log de SETTIMEOUT

firstCallback

main()

log(1º FUERA)setTimeout (secondCallback)

secondCallback

firstCallback

log(2º FUERA)

secondCallback

firstCallback

secondCallback

secondCallback

Page 46: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

PRIMITIVE OBSESSION / AIDA ALBARRÁN @aidaispro

EVENT LOOP

La magia de posibilitar hacer varias cosas “a la vez” y del mismo modo volvernos locos con la concurrencia...

Page 47: HOLA! - FrontFest 2020...HOLA! ION / N @aidaispro Soy Aida Albarrán @aidaispro aidalbla@gmail.com ¿DE QUÉ VAMOS A HABLAR HOY? ION / N @aidaispro 1. Javascript. No sabes Javascript,

¡GRACIAS!¿Alguna pregunta?

@aidaispro

[email protected]