gpt4 book ai didi

javascript - 真正的异步、非阻塞 javascript 不是不可能的吗?

转载 作者:数据小太阳 更新时间:2023-10-29 05:43:01 25 4
gpt4 key购买 nike

所以,我在这里遗漏了什么吗?

所有流行的现代浏览器中的 javascript 引擎(截至 2011 年)都是单线程

这意味着虽然 EVENTS 可以异步发生,但它们仍然排队(在“单个文件”中)以待执行。

这意味着所有这些将外部 javascript 加载到 HTML 页面的技术,它们实际上只允许异步发生下载,但是下载代码的执行总是发生一个(函数) 一次,一次一个文件。

所以我在网上看到的其他“提示”使用 setTimeout 分解和执行初始化代码块,那将是虚假的、不正确的建议——计时器也是一个单文件队列,并且只按顺序执行。使用 setTimeout 你只是通过定时器导致乱序执行并允许浏览器中的其他事件(即鼠标点击或按键等)跳入队列 - 这本身可能很好,但是这当然不是异步代码执行。

如果我是对的,那么有很多不好的、被误解的建议经常重复出现。

最佳答案

您不会混淆异步和并发吗?确实在浏览器 JS 环境中没有任何并发(除了网络 worker ,以及浏览器在内部做的任何事情,比如 I/O 和渲染),但是异步只是意味着所有调用都是非阻塞的,并且控制流总是立即返回。

您对“阻塞”/“非阻塞”的定义也不明确。阻塞函数调用的广泛含义是在所有计算、I/O 等完成之前,它不会将控制权返回给调用者。这并没有说明并发性。

关于javascript - 真正的异步、非阻塞 javascript 不是不可能的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5434270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com