NODEJS+MONGODB+AngularJS的学习之路第二章

1.比较线程和时间回调

  

2.node中的柱塞

    柱塞I/O停止当前线程的执行并等待一个回应, 直到收到回应道才能继续

    

  3使用超时器来延迟工作

  settTimeout(fun, time)  

  清楚定时器clearTimeout()

  使用时间间隔执行定期工作

  setInterval(fun, time)

  清除定时器clearInterval()

  从时间循环中取消定时器引用

  例如: myinterval = setInterval(myfun)

    myinterval.unref();

    重新引用 myinterval.redf();

   4使用nextTick来调度工作

    在时间队列上调度工作的一个非常有用的方法是使用precess.nextTick(callback)函数。此函数调度要在事件循环的下一次循环中运行的工作。 不像setImmediate()方法。nextTick()在I/O时间被触发之前执行,这可能会导致i/o时间的饥饿, 所以node通过默认值为1000的process.maxTickDepth来限制时间队列的每次循环可执行的nextTick()事件数目。

下面清单中的代码说明了使用阻塞i/o调用, 定时器和nextTick()时, 事件的顺序。请注意。阻塞调用fs.stat()首先执行, 然后是两个setImmediate()调用, 之后是两个nextTick()调用, 下面显示两个nextTick()调用在任何其他的调用之前执行, 之后是第一个setImmdiate()调用, 接着是FS.stat()调用, 然后在循环的下一次迭代中, 第二个setImmediate()被调用。

    

5.实现时间发射器和监听器

  1实现一个简单的事件发射器

  var events = require('events');

  var emitter = new events.EventEmitter();

  emitter.emit('simpleEvent');

  直接添加到JavaScript对象, 在对象实例中调用 events.EventEmitter.call(this)  还需要把events.EventEmitter.prototype添加到对象的原型中

  

  2.把时间监听器添加到对象

    .addListener(eventName, callback) 加入到事件队列

    .on(eventName, call back)  加入到事件队列

    once(eventName, callback) 触发一次

  添加一个监听

    3.从对象中删除监听器

    

 

posted @ 2017-02-25 13:36  白色的番茄  阅读(319)  评论(0编辑  收藏  举报