js同步编程与异步编程的区别,异步有哪些优点,为什么要异步,异步有哪些困扰

发布于 2022-09-02 16:02:12 字数 64 浏览 36 评论 0

最近面试的被问到这样一个题
能大概说出些,但是不全

能否科普下相关内容,网上查的都大同小异

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

唔猫 2022-09-09 16:02:12

这是个朴素但是不精确的回答, 主要是帮你理解

同步的代码, 在很多情况下, CPU其实是在等待中度过的, 比如等待一个网络连接, 等待MySQL服务器的数据返回
异步的代码, 就是把这些等待的时间给充分利用起来了, 把网络连接, 访问数据库这种耗时的工作时都在注册一个callback或者event之后切换出来, 让CPU先去干别的活(例如响应别的请求), 当网络连接,数据库返回结果时再回来执行刚才的callback中的代码

异步的代码可以大大的提升系统的容量上限, 因为充分利用了空闲的CPU时间, 但是对于单个的请求的性能提升帮助比较有限 (除非你的单个请求大量依赖这种IO操作)

别理我 2022-09-09 16:02:12

同步编程与异步编程的区别
从编程方式来讲当然是同步编程的方式更为简单,但是同步有其局限性一是假如是单线程那么一旦遇到阻塞调用,会造成整个线程阻塞,导致cpu无法得到有效利用,而浏览器的js执行和浏览器渲染是运行在单线程中,一旦遇到阻塞调用不仅意味js的执行被阻塞更意味整个浏览器渲染也被阻塞这就导致界面的卡死,若是多线程则不可避免的要考虑互斥和同步问题,而互斥和同步带来复杂度也很大.实际上浏览器下因为同时只能执行一段js代码这意味着不存在互斥问题,但是同步问题仍然不可避免,以往回调风格中异步的流程控制(其实就是同步问题)也比较复杂,随着promise和async的引入这问题得到很大缓解。浏览器端的编程方式也即是GUI编程,其本质就是事件驱动的(鼠标点击,http请求结束等)异步编程更为自然。

你另情深 2022-09-09 16:02:12

js是单线程。单线程碰到阻塞就楞b了(阻塞在那边),所以要用异步。

在巴黎塔顶看东京樱花 2022-09-09 16:02:12

同步你得等着,不能干其他的;异步你得先说好了干啥,就不管了,干其他的了。后续代码有数据依赖,你就得同步候着。没依赖关系就各玩各的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文