(single thread event loop) • Porque resulta no ser lo que creíamos que era • Porque tiene muy buenas partes (funciones, closures, lexical scoping, ...) • Porque se adapta con naturalidad a un paradigma asíncrono basado en eventos Monday, 10 December 12
Dahl at JSConf 2009 http://www.youtube.com/watch?v=ztspvPYybIY • Server-side JavaScript • Built on Google’s V8 • Evented, non-blocking, I/O. Similar to EventMachine or Twisted • CommonJS modules system • 8000 lines of C/C++, 2000 lines of JavaScript, 14 contributors Monday, 10 December 12
{ var b = 1; return a + b; } // Una referencia a una función anónima var foo = function (a) { var b = 1; return a + b; }; // Invocamos una función pasando otra función anónima // como argumento (callback) $.get('/someurl', function (err, res) { if (err) { return console.error(err); } // Hacemos algo con `res`... }); Monday, 10 December 12
tenemos un problema... }) .on('result', function (row) { // ... }) .on('end', function () { // Ya se han emitido todos los resultados. }); Tres paradigmas EventEmitter Monday, 10 December 12
b | c | d http.createServer(function (req, res) { fs.createReadStream(__dirname + '/rows.json').pipe(res); }); a.pipe(b).pipe(a); Monday, 10 December 12