Share
Embed
"Concurrencia" El event loop simplificado
Entender el modelo de concurrencia de JS es una tarea pesada, la idea de esta plática es hacerlo levemente más accesible. No para hacernos mejores programadores directamente, sino con la intención de entender un modelo básico de la computación moderna. Presentado en ChelaJS
Roberto Hidalgo
February 04, 2015
Transcript
67 slides
-
var app = require('http').createServer(handler); var io = require('socket.io')(app); app.listen(80); io.on('connection',
function (socket){ var user = null; socket.on('join', function (userName){ user = userName; io.emit('joined', user+" llegó al chat"); }); socket.on('message', function(message){ io.emit('msg', user+': '+message); }); socket.on('disconnect', function(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); }); -
var hhg2g = require('hhg2g'); function pregunta(){ hhg2g.compute(function(respuesta){ var lineas =
[ "La respuesta a", "la vida, el universo", "y todo es: " ]; console.log( lineas.join(' ')+respuesta; ); }); }; pregunta(); console.log(‘ejecutando’); -
require var hhg2g = require('hhg2g'); function pregunta(){ hhg2g.compute(function(respuesta){ var lineas
= [ "La respuesta a", "la vida, el universo", "y todo es: " ]; console.log( lineas.join(' ')+respuesta; ); }); }; pregunta(); console.log(‘ejecutando’); -
pregunta var hhg2g = require('hhg2g'); function pregunta(){ hhg2g.compute(function(respuesta){ var lineas
= [ "La respuesta a", "la vida, el universo", "y todo es: " ]; console.log( lineas.join(' ')+respuesta; ); }); }; pregunta(); console.log(‘ejecutando’); -
pregunta hhg2g.compute var hhg2g = require('hhg2g'); function pregunta(){ hhg2g.compute(function(respuesta){ var
lineas = [ "La respuesta a", "la vida, el universo", "y todo es: " ]; console.log( lineas.join(' ')+respuesta; ); }); }; pregunta(); console.log(‘ejecutando’); -
console.log var hhg2g = require('hhg2g'); function pregunta(){ hhg2g.compute(function(respuesta){ var lineas
= [ "La respuesta a", "la vida, el universo", "y todo es: " ]; console.log( lineas.join(' ')+respuesta; ); }); }; pregunta(); console.log(‘ejecutando’); -
pregunta hhg2g.compute var hhg2g = require('hhg2g'); function pregunta(){ hhg2g.compute(function(respuesta){ var
lineas = [ "La respuesta a", "la vida, el universo", "y todo es: " ]; console.log( lineas.join(' ')+respuesta; ); }); }; pregunta(); console.log(‘ejecutando’); -
pregunta hhg2g.compute anonymous var hhg2g = require('hhg2g'); function pregunta(){ hhg2g.compute(function(respuesta){
var lineas = [ "La respuesta a", "la vida, el universo", "y todo es: " ]; console.log( lineas.join(' ')+respuesta; ); }); }; pregunta(); console.log(‘ejecutando’); -
pregunta hhg2g.compute anonymous var hhg2g = require('hhg2g'); function pregunta(){ hhg2g.compute(function(respuesta){
var lineas = [ "La respuesta a", "la vida, el universo", "y todo es: " ]; console.log( lineas.join(' ')+respuesta; ); }); }; pregunta(); console.log(‘ejecutando’); -
pregunta hhg2g.compute console.log anonymous var hhg2g = require('hhg2g'); function pregunta(){
hhg2g.compute(function(respuesta){ var lineas = [ "La respuesta a", "la vida, el universo", "y todo es: " ]; console.log( lineas.join(' ')+respuesta; ); }); }; pregunta(); console.log(‘ejecutando’); -
pregunta hhg2g.compute anonymous console.log var hhg2g = require('hhg2g'); function pregunta(){
hhg2g.compute(function(respuesta){ var lineas = [ "La respuesta a", "la vida, el universo", "y todo es: " ]; console.log( lineas.join(' ')+respuesta; ); }); }; pregunta(); console.log(‘ejecutando’); -
var hhg2g = require('hhg2g'); function pregunta(){ hhg2g.compute(function(respuesta){ var lineas =
[ "La respuesta a", "la vida, el universo", "y todo es: " ]; console.log( lineas.join(' ')+respuesta; ); }); }; pregunta(); console.log(‘ejecutando’); -
resultado stack event loop io.on('connection', function conn(sock){ var user =
null; sock.on('join', function join(userName){ user = userName; io.emit('joined', user+" llegó al chat"); }); sock.on('message', function msg(message){ io.emit('msg', user+': '+message); }); sock.on('disconnect', function out(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); }); -
resultado stack event loop io.on io.on('connection', function conn(sock){ var user
= null; sock.on('join', function join(userName){ user = userName; io.emit('joined', user+" llegó al chat"); }); sock.on('message', function msg(message){ io.emit('msg', user+': '+message); }); sock.on('disconnect', function out(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); }); -
resultado stack event loop io.on io.on('connection', function conn(sock){ var user
= null; sock.on('join', function join(userName){ user = userName; io.emit('joined', user+" llegó al chat"); }); sock.on('message', function msg(message){ io.emit('msg', user+': '+message); }); sock.on('disconnect', function out(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); }); -
resultado stack event loop conn io.on('connection', function conn(sock){ var user
= null; sock.on('join', function join(userName){ user = userName; io.emit('joined', user+" llegó al chat"); }); sock.on('message', function msg(message){ io.emit('msg', user+': '+message); }); sock.on('disconnect', function out(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); }); -
io.on('connection', function conn(sock){ var user = null; sock.on('join', function join(userName){
user = userName; io.emit('joined', user+" llegó al chat"); }); sock.on('message', function msg(message){ io.emit('msg', user+': '+message); }); sock.on('disconnect', function out(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); }); stack event loop conn resultado -
io.on('connection', function conn(sock){ var user = null; sock.on('join', function join(userName){
user = userName; io.emit('joined', user+" llegó al chat"); }); sock.on('message', function msg(message){ io.emit('msg', user+': '+message); }); sock.on('disconnect', function out(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); }); stack event loop conn sock.on sock.on sock.on resultado -
io.on('connection', function conn(sock){ var user = null; sock.on('join', function join(userName){
user = userName; io.emit('joined', user+" llegó al chat"); }); sock.on('message', function msg(message){ io.emit('msg', user+': '+message); }); sock.on('disconnect', function out(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); }); stack event loop out msg join conn sock.on sock.on sock.on resultado -
io.on('connection', function conn(sock){ var user = null; sock.on('join', function join(userName){
user = userName; io.emit('joined', user+" llegó al chat"); }); sock.on('message', function msg(message){ io.emit('msg', user+': '+message); }); sock.on('disconnect', function out(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); }); stack event loop out msg join conn resultado -
io.on('connection', function conn(sock){ var user = null; sock.on('join', function join(userName){
user = userName; io.emit('joined', user+" llegó al chat"); }); sock.on('message', function msg(message){ io.emit('msg', user+': '+message); }); sock.on('disconnect', function out(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); }); stack event loop out msg join resultado -
io.on('connection', function conn(sock){ var user = null; sock.on('join', function join(userName){
user = userName; io.emit('joined', user+" llegó al chat"); }); sock.on('message', function msg(message){ io.emit('msg', user+': '+message); }); sock.on('disconnect', function out(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); }); stack event loop out msg join resultado -
io.on('connection', function conn(sock){ var user = null; sock.on('join', function join(userName){
user = userName; io.emit('joined', user+" llegó al chat"); }); sock.on('message', function msg(message){ io.emit('msg', user+': '+message); }); sock.on('disconnect', function out(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); }); stack event loop out msg join join resultado -
io.on('connection', function conn(sock){ var user = null; sock.on('join', function join(userName){
user = userName; io.emit('joined', user+" llegó al chat"); }); sock.on('message', function msg(message){ io.emit('msg', user+': '+message); }); sock.on('disconnect', function out(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); }); stack event loop out msg join join io.emit resultado -
io.on('connection', function conn(sock){ var user = null; sock.on('join', function join(userName){
user = userName; io.emit('joined', user+" llegó al chat"); }); sock.on('message', function msg(message){ io.emit('msg', user+': '+message); }); sock.on('disconnect', function out(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); }); stack event loop out msg join join io.emit resultado -
io.on('connection', function conn(sock){ var user = null; sock.on('join', function join(userName){
user = userName; io.emit('joined', user+" llegó al chat"); }); sock.on('message', function msg(message){ io.emit('msg', user+': '+message); }); sock.on('disconnect', function out(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); }); stack event loop out msg join join resultado -
io.on('connection', function conn(sock){ var user = null; sock.on('join', function join(userName){
user = userName; io.emit('joined', user+" llegó al chat"); }); sock.on('message', function msg(message){ io.emit('msg', user+': '+message); }); sock.on('disconnect', function out(){ user = null; io.emit('left', user+' fue a ver si ya puso la marrana'); }); }); stack event loop out msg join resultado