直到看到这段代码,我才知道javascript是单线程的,这里输出的结果是比1000大的数。但是我想问的是javascript无论是node或是浏览器中都是单线程的吗?那么那些$.ajax()方法就不能并行执行了吗?那有些网站做到并行渲染多个块是怎么做到的呢?
1
takwai Aug 12, 2013
|
2
ipconfiger Aug 12, 2013
LZ搞错了,浏览器中,Ajax的请求如果不特殊设置都是新开线程不会阻塞主线程的,setTimeout你可以试试起两个看看就知道了
|
3
Mutoo Aug 12, 2013
html5有个新特性 “html5 worker” 可以实现多线程;
|
4
zava Aug 12, 2013
异步就是有这么个好处。
|
5
pythonee OP @ipconfiger 我猜$.ajax也是新起线程,那你的意思是浏览器中的js有特殊性?
|
7
loading Aug 12, 2013 via iPhone
单线程的,还会丢语句,settimeout方法不会丢语句。
web worker可以看一下,一般用于大量运算,操作dom就算了 |
8
otakustay Aug 12, 2013
ajax属于IO,当然是异步的了,javascript的单线程从来都不包括IO,只是纯粹的脚本执行是单线程的。但是ajax结束后回调至javascript,回调的执行属于脚本还会回到单线程来。
|