1 回调: function result(something) { console.log(something)}function getData(callback, something) {
1 回调:
function result(something) { console.log(something)}function getData(callback, something) { something += ' is cool' callback(something)}getData(result, 'Nodejs')// 匿名函数getData(function (something) { console.log(something)},'Angularjs')
结果:
Nodejs is cool
Angularjs is cool
2
同步:顺序执行,等待事件完成后执行
var c = 0function print() { console.log(c)}function plus() { c += 1}plus()print()
结果:1
异步:非顺序执行,当事件执行的同时执行
var c = 0function print() { console.log(c)}function plus(callback) { setTimeout(function () { c += 1 callback() },1000)}plus(print)
结果:1(1秒后显示)
3 I/O
磁盘的读和写
4 单线程/多线程
单线程:每次执行一个事件
多线程:每次可以执行多个事件
5 阻塞/非阻塞
阻塞:挂起状态,不允许执行下一个操作
非阻塞:及时操作未完成,也可以执行下一个操作
6 事件和事件驱动
function click(e) { window.alert('Button is clicked')}// 点击按钮触发回调函数document.getElementById('button').addEventListener('click',click)
7 基于事件驱动的回调
click方法
8 事件循环
回调函数队列,异步执行函数的时候,回调函数被压入这个队列,回调按照被压入的顺序执行,先进先出。
总结:NodeJS是单线程,非阻塞,事件驱动