慕神7306085
其实原因很简单,以webkit为例,当初我在把webkit用的libxml换成expat的时候就发现webkit有个怪癖,当解析到js标签的时候,会把libxml抛出的回调和数据缓存起来,缓存完所有抛出的数据后再去执行js的东西,执行完了再接着拿出缓存,去解析缓存里的东西。这样对于webkit做多线程解析html标签优化是不太友好的,也会增加额外的缓存开销,还会解析着的时候赶紧去排版。排版是很耗时的,还会在执行js的时候显示个不完整甚至白版页面。后来我想明白了,这也是为了让js能在任何时机取到控制权,甚至在解析标签到一半的时候,总会有很少的需求会必须在这种时机拿到控制权吧。