浏览器中的javascript是不是也是单线程的呢?

2013-08-12 09:05:32 +08:00
 pythonee
https://gist.github.com/pythonee/6207625

直到看到这段代码,我才知道javascript是单线程的,这里输出的结果是比1000大的数。但是我想问的是javascript无论是node或是浏览器中都是单线程的吗?那么那些$.ajax()方法就不能并行执行了吗?那有些网站做到并行渲染多个块是怎么做到的呢?
2749 次点击
所在节点    问与答
8 条回复
takwai
2013-08-12 09:13:53 +08:00
ipconfiger
2013-08-12 09:18:36 +08:00
LZ搞错了,浏览器中,Ajax的请求如果不特殊设置都是新开线程不会阻塞主线程的,setTimeout你可以试试起两个看看就知道了
Mutoo
2013-08-12 09:20:41 +08:00
html5有个新特性 “html5 worker” 可以实现多线程;
zava
2013-08-12 09:31:13 +08:00
异步就是有这么个好处。
pythonee
2013-08-12 10:27:11 +08:00
@ipconfiger 我猜$.ajax也是新起线程,那你的意思是浏览器中的js有特殊性?
pythonee
2013-08-12 10:28:08 +08:00
@zava 好处?异步如果有顺序依赖咋整,而且这里是单线程,没有看出来异步带来的好处,还请详细道来
loading
2013-08-12 10:45:42 +08:00
单线程的,还会丢语句,settimeout方法不会丢语句。
web worker可以看一下,一般用于大量运算,操作dom就算了
otakustay
2013-08-12 11:42:20 +08:00
ajax属于IO,当然是异步的了,javascript的单线程从来都不包括IO,只是纯粹的脚本执行是单线程的。但是ajax结束后回调至javascript,回调的执行属于脚本还会回到单线程来。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/78787

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX