JavaScript 的优势,它的 language runtime 是单线程的,异步靠的是 event loop,而不用开发者操心多线程。就比如写爬虫,如果要并发地爬,Python 或者 Java 大概率需要 developer 开线程池自己维护,js 的话只需要 callback 就好了
1
gam2046 2019-01-19 10:43:35 +08:00
这真的是优势嘛,我感觉是个吭呢。(当然,我自己很菜)
event loop 并不是多线程,本质上依旧是单线程,当然现在有些 JavaScript Runtime 有提供 worker-thread,那就是真多线程了,但这 JavaScript 是不可控的。 不论是 promise 还是回调地狱,在多次嵌套的情况下,都是噩梦。 await/async 的出现,我感觉更像是向传统静态语言靠近 |
2
kindjeff 2019-01-19 10:51:59 +08:00 7
JavaScript 的优点是可以写任何东西,缺点是你真的会用它去写这些东西
|
3
giuem 2019-01-19 10:56:56 +08:00 via iPhone
js 代码的执行确实是单线程的,但是网络 io,文件 io 这些是在不同的线程中
可以看一下这篇文章 http://liyangready.github.io/2015/08/14/nodejs%E7%9C%9F%E7%9A%84%E6%98%AF%E5%8D%95%E7%BA%BF%E7%A8%8B%E5%90%97%EF%BC%9F/ |
4
congeec 2019-01-19 11:35:01 +08:00 via iPhone
单线程异步哪个语言做不到?
callback 是优势? |
5
qdwang 2019-01-19 11:38:46 +08:00
js 的唯一优势在于,易学,会的人多。
|
6
passerbytiny 2019-01-19 11:57:54 +08:00
教育不好误人子弟。Java 线程池,如果你只想无脑的用,那么不超过 10 行代码就能完事。
|
7
lhx2008 2019-01-19 12:03:21 +08:00 via Android
真的不要再说 js 是单线程了好吗,nodejs 早就有 eventloop 多线程模式,只是说浏览器里面可能单线程比较合适。更别说 IO 操作本来就另有线程池。而且要解决的多线程问题一点没有比传统语言少。
|
8
Wincer 2019-01-19 12:14:32 +08:00 via Android
Python 和 Java 现在都有异步库了,再说了 callback 明明是最为人诟病的一点,怎么还成被描述成“只需要”,听得像是优势一样。
|