四、 Messenger的调度系统
对于同步消息的递送机制没有更多值得叙述的,根据以上的设计,任何人都可以有自己的send方法的实现,而且通常也不会有太多的意外。但对于异步消息的递送机制, 也就是本文提到的调度系统就要非常考究了,在JavaScript里我们需要找一种类似多线程的技术来实现这个调度系统。
我们知道JavaScript是没有线程概念的(这句话,或许不一定准确),这可以理解为,在浏览器里JavaScript并不像一个通常意义多任务系统一样,存在任务(线程)切换的概念,而是只有一个单一的UI线程在交替执行UI渲染和事件处理。我们可以把浏览器的javascript调度理解为下图:
UI更新,各种事件的处理以及一些JavaScript方法调用就像一个个任务排队等候着UI线程来调度执行。由此,我们可以理解,当一个JavaScript方法的执行如果不能尽快地返回,为什么浏览器就会表现出“假死”原因了。
既然浏览器没有为JavaScript提供多线程的技术,而这个Messenger系统又需要使用多线程技术,我们如何设计这个Messenger的调度系统呢?先回忆一下多任务操作系统的多任务调度的原理吧,
未完待续...
一直没有时间“来续未完”,只好在这里放一个链接,有兴趣了解这个通信系统的可以去看一下,主要是js.util.Messenger.js
阅读(816) | 评论(0) | 转发(0) |