给 JavaScript 插上多线程的翅膀 —— Web Worker 的 Promise 化实践 (www.alloyteam.com)

【简介】

众所周知,JavaScript 这门语言的一大特点就是单线程,即同一时间只能同步处理一件事情,这也是这门语言衍生出的 nodeJS 被各后端大佬诟病的很重要的一点。


然而,JavaScript 在设计之初,其实是故意被设计成单线程语言的,这是由于它当时的主要用途决定的。

JavaScript 最初的设计初衷是完成页面与用户的交互,操作 DOM 或者 BOM 元素,此时如果一味地追求效率使用多线程的话,会带来资源抢占,数据同步等等问题,因此必须规定,同一时间只有一个线程能直接操作页面元素,以保证系统的稳定性以及安全性。

尽管如此,但是 JavaScript 并不是只能线性处理任务。JS 拥有消息队列和事件循环机制,通过异步处理消息的能力来实现并发。在高 I/O 型并发事务处理的过程中,由于不需要手动生成与销毁线程以及占用额外管理线程的空间,性能表现及为优异。因此,nodeJS 作为 JavaScript 在服务端的探索者,在处理高并发网络请求的优势极为明显。

尽管 JavaScript 通过异步机制完美解决了高 I/O 性能的问题,但 JavaScript 单线程执行的本质还是没有变的。因此缺点就显而易见了,那就是处理 CPU 密集型的事务时没有办法充分调动现代多核心多线程机器的运算资源。

在现代大型前端项目中,随着代码的复杂程度越来越高,本地的计算型事务也在变得繁重,而运行在单线程下 JS 项目必定会忙于处理计算而无暇顾及用户接下来的频繁操作,造成卡顿等不太好的用户体验,更严重的情况是,当计算型事务过多时还有可能因为资源被占满带来网页无响应的卡死现象。因此,Web 项目的本地多线程运算能力势在必行,由此,Web Worker 应运而生了。

点击查看全文 >>

@技术头条 2021-05-28 08:27分享 / 原作者微博:@AlloyTeam / 0个评论
赞过的人: @IT技术博客大学习
要不要再学学下面的文章?
开箱即用的基于web的gdb前端gdbgui (www.gdbgui.com)
非常易用的用Python开发的基于web的gdb前端。临时在服务端快速定位问题比配gdb server方便。比cgdb或一些gdbinit生成的更tui更符合年轻程序员的习惯。
by @sleetdrop 2023-01-22 09:42 分享 查看详情
美团开放平台SDK自动生成技术与实践 (tech.meituan.com)
美团开放平台为整个美团提供了20+业务场景的开放API,为了使开发者能够快速且安全的接入美团开放平台,美团开放平台提供了多种语言的SDK来提高开发者的接入效率。本文介绍了美团开放平台如何自动生成SDK代码的相关技术实现方案,希望对大家能够有所帮助或者启发。
by @技术头条 2023-01-10 00:07 分享 查看详情
文字语义纠错技术探索与实践-张健 (www.52nlp.cn)
文本语义纠错的使用场景非常广泛,基本上只要涉及到写作就有文本纠错的需求。书籍面市前就有独立的校对的环节来保障出版之后不出现明显的问题。在新闻中我们也时不时看到因为文字审核没到位造成大乌龙的情况,包括上市公司在公开文书上把“临时大会”写成为“临死大会”,政府文件把“报效国家”写成了“报销国家”。有关文本纠错的辅助工具能给文字工作人员带来较大的便利,对审核方面的风险也大幅降低。
by @技术头条 2022-12-24 23:38 分享 查看详情
美团外卖推荐情境化智能流量分发的实践与探索 (tech.meituan.com)
美团外卖推荐团队在推荐算法的长期落地实践中,针对外卖业务情境化特点对排序模型进行深入探索与优化。本文介绍了面向情境化建模的“情境细分+统一模型”建模思路,通过用户行为序列建模以及专家网络两个模块的优化,实现不同场景间对信息独有性的刻画和信息共性的相互传递,进而提升全部流量效率。
by @技术头条 2022-12-24 23:31 分享 查看详情
美团外卖搜索基于Elasticsearch的优化实践 (tech.meituan.com)
美团外卖搜索工程团队在Elasticsearch的优化实践中,基于Location-Based Service(LBS)业务场景对Elasticsearch的查询性能进行优化。该优化基于Run-Length Encoding(RLE)设计了一款高效的倒排索引结构,使检索耗时(TP99)降低了84%。本文从问题分析、技术选型、优化方案等方面进行阐述,并给出最终灰度验证的结论。
by @技术头条 2022-12-18 20:49 分享 查看详情
检索式对话系统在美团客服场景的探索与实践 (tech.meituan.com)
在传统的客服、IM等场景中,坐席需要花费大量时间回答用户的各种咨询,通常面临答案查询时间长、问题重复、时效要求高等挑战。因而,使用技术手段辅助坐席快速、准确、高效地回答用户的各类问题非常有必要。我们设计并迭代了一套基于检索式对话系统的框架,以推荐回复的方式,基于对话上文为坐席提供候选回复,提高坐席效率进而提升用户体验,在美团众多业务上均取得了显著的效果。
by @技术头条 2022-12-18 20:48 分享 查看详情
动态路由 TheRouter 的设计与实践 (www.kymjs.com)
这篇文章是我在 2022【GIAC 全球互联网架构大会】分享时所讲内容的文字版本,修改删减了演讲时的冗余言语,现开放给大家阅读,希望能给买不到票参加分享的 开源实验室 读者带来帮助。
by @技术头条 2022-12-18 20:45 分享 查看详情
美团高性能终端实时日志系统建设实践 (tech.meituan.com)
你是否经常遇到线上需要日志排查问题但迟迟联系不上用户上报日志的情况?或者是否经常陷入由于存储空间不足而导致日志写不进去的囧境?本文介绍了美团是如何从0到1搭建高性能终端实时日志系统,从此彻底解决日志丢失和写满问题的。希望能为大家带来一些帮助和启发。
by @技术头条 2022-12-18 20:06 分享 查看详情
Web前端开发中的反向与倒序 (www.zhangxinxu.com)

介绍在Web布局中,我所知道的与倒序排列,或反向布局,或任意位置设置相关的属性和技术,肯定还有其他策略,欢迎补充。
by @技术头条 2022-12-18 20:06 分享 查看详情
智能文档处理IDP关键技术与实践-高翔 (www.52nlp.cn)
什么是智能文档处理?针对文本数据处理尤其是纯文本,大家通常会想到使用自然语言处理(Natural language processing,NLP)技术来解决语义理解及分析处理工作。关于自然语言处理技术的研究有很长历史,针对不同层面文本处理和分析有很多技术点,常见技术例如分词与词性标注、命名实体识别、句法结构分析、文本分类、文本摘要等功能。
by @技术头条 2022-12-10 22:41 分享 查看详情