Coder Social home page Coder Social logo

notes-callbacks's Introduction

Callbacks

馃憠 Ver todas las notas

Contenido


Intro

  • La mayor parte del c贸digo que escribimos se ejecuta secuencialmente. Llamamos a esto programaci贸n sincr贸nica
  • A veces es beneficioso que el c贸digo se ejecute luego de que suceda algo determinado (un evento) y no secuencialmente. Llamamos a esto programaci贸n asincr贸nica

Los callbacks nos permiten programar de forma asincr贸nica

JS Asincr贸nico

  • En un lenguaje single-thread, s贸lo una tarea puede ejecutarse a la vez
  • Una tarea pasa a ejecutarse s贸lo si la anterior fue completada (ej: esperar a que una funci贸n termine de ejecutarse y retorne el resultado)
  • Si una operaci贸n tarda mucho en finalizar, bloquea la ejecuci贸n del resto del programa (si tarda poco tambi茅n, pero obviamente es m谩s dif铆cil de percibir)
  • La ejecuci贸n asincr贸nica de c贸digo nos permite esquivar este cuello de botella, al delegar o poner en segundo plano[1] una tarea, para que podamos continuar con la ejecuci贸n del resto, sin esperar a que la anterior finalice y obtener el resultado de la primera cuando finalice, para poder utilizarlo
const sync = () => {
  console.log('First');
  alert('Hello!');
  console.log('Third');
}
// simulate server response latency
setTimeout(() => console.log('Response'), 5000);

// this function is executed after the other one, but finished first
console.log('Request');

// we can reduce latency to just 4ms and it'll still be executed after the 2nd function
setTimeout(() => console.log('Response'), 4);

// this function is executed after the other one, but finished first
console.log('Request');

Ok todo muy lindo pero... qu茅 es un callback? 馃

Es una funci贸n. Se llama callback porque espera que alguien la llame para aparecer y ejecutarse. Se invoca s贸lo cuando pasa algo determinado. Es por esto 煤ltimo que decimos tambi茅n que JavaScript es un lenguaje de programaci贸n orientado a eventos o event-driven.

Hay una inversi贸n del control: en lugar de ser nosotras/os quienes decidimos cu谩ndo va a ejecutarse una funci贸n (como lo hacemos normalmente, cuando codeamos secuencialmente), es otra funci贸n la que va a invocar a nuestro callback en alg煤n momento.

驴C贸mo funcionan los callbacks en JavaScript?

Recordemos que en JavaScript, las funciones son lo que llamamos First-Class citizens y esto nos permite tratarlas como cualquier otro valor, lo que incluye pasarlas por par谩metro a otra funci贸n (y que esto a su vez es posible porque en JavaScript las funciones son higher order functions).

En el siguiente ejemplo, le pasamos una funci贸n (callback) myCallback por par谩metro a otra funci贸n foo. La funci贸n callback luego es invocada por foo

// caller
function foo(callback) {
  callback('world');
}

// callback function
function myCallback(name) {
  console.log(`Hello ${name}`); // "hello world"
}

// pass callback to caller
foo(myCallback);
  • Un callback es s贸lo una forma de guardar cosas para hacer m谩s tarde
  • El orden en el que las cosas suceden no es lineal ni de arriba hacia abajo: va cambiando a medida que otras tareas se completan

1Ver notas sobre el Event Loop.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    馃枛 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 馃搳馃搱馃帀

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google 鉂わ笍 Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.