首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Javascript setTimeOut真的是异步的吗?

是的,JavaScript中的setTimeout函数确实是异步的

然而,在JavaScript中,setTimeout的行为可能会让人误以为它是同步的,特别是在短时间延迟(例如几个毫秒)的情况下。这是因为Javscript引擎在执行回调函数之前,可能会出现“时间切片”(time slicing)和“非阻塞I/O”的行为。这意味着,尽管setTimeout在指定的延迟之后被触发,但实际执行回调函数的时间可能会稍微晚一点,因为JavaScript引擎可能在执行其他任务。

总之,setTimeout确实是异步的,但要注意的是,在某些情况下,由于JavaScript引擎的时间切片和非阻塞I/O特性,回调函数的执行可能会有轻微的延迟。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

javascript真的是异步的吗?且看setTimeout的实现原理以及setTimeout(0)的使用场景「建议收藏」

大家好,又见面了,我是全栈君。 在今天之前我一直以为setTimeout这个函数是异步的,无意中看到了一篇关于setTimeout的文章。发现自己曾经的认识全是错误的,赶紧总结下。...想要理解上面的2段代码,我们得了解一下javascript中setTimeout的实现原理。首先牢记一点:JavaScript 是单线程运行的,也就是无法同一时候运行多段代码。...所以 setTimeout 并不能保证运行的时间。是否及时运行取决于 JavaScript 线程是拥挤还是空暇。...运行javascript的线程会在空暇的时候,自行从队列中取出任务然后运行它。javascript通过这样的队列机制。给我们制造一个异步运行的假象。...: ", end - start, "ms"); }, 500); console.log("task finished."); 我们之所以会感觉到这段代码是在异步运行,这是由于javascript

67110

重新认识javascript的settimeout和异步

今晚看到QLeelulu的一道JavaScript面试题(setTimeout),稍微想了一下,好不容易连猜带蒙,凑巧说对了答案。但是原因到底是什么呢?...然后看了一下文章下面的评论,发现5楼和6楼的回答很有道理,主要意思就是说javascript引擎是单线程执行的,while循环那里执行的时候,settimeout里面的函数根本没有执行的机会,这样while...也就是说第一个settimeout里执行的时候是一个死循环,这个直接导致了理论上比它晚一秒执行的第二个settimeout里的函数被阻塞,这个和我们平时所理解的异步函数多线程互不干扰是不符的。...结论:根据实践结果,可以得出,javascript引擎确实是单线程处理它的任务队列(能理解成就是普通函数和回调函数构成的队列吗?)的。...在javascript里实现异步编程很大程度上就是一种障眼法,单线程的引擎实现多线程的编程,如果要实现一些资源同步互斥之类的操作(一如C#、Java等语言的多线程),我感觉真正实现起来根本无法轻易得到保证

98390
  • 你真的懂异步编程吗?

    在JS 代码中,异步无处不在,Ajax通信,Node中的文件读写等等等,只有搞清楚异步编程的原理和概念,才能在JS的世界中任意驰骋,随便撒欢; 单线程 JavaScript 异步方案 首先我们需要了解,...JavaScript 代码的运行是单线程,采用单线程模式工作的原因也很简单,最早就是在页面中实现 Dom 操作,如果采用多线程,就会造成复杂的线程同步问题,如果一个线程修改了某个元素,另一个线程又删除了这个元素...)和 异步模式( Asynchronous) 后面我们将分以下几个内容,来详细讲解 JavaScript 的同步与异步: 1、同步模式与异步模式 2、事件循环与消息队列 3、异步编程的几种方式 4、Promise...,用于发送异步的 ajax 请求,函数调用时,代码实际是按照同步模式执行的,当执行到 xhr.send() 时,就会开启异步的网络请求,向指定的 url 地址发送网络请求,从建立网络链接到断开网络连接的整个过程是异步线程在执行的.../d1.json',function(err,data){ console.log(data); }) 回调函数让我们轻松处理异步的结果,但是,如果代码是异步执行的,而逻辑是同步的; 就会出现

    83830

    WebAssembly 真的是未来吗?

    WebAssembly 真的是未来吗? 本文翻译自 Is WebAssembly Really the Future? Wasm 的前景比以往任何时候都更加光明。但接下来路线图会将我们引向何方?...云原生计算基金会 (CNCF) 最近的年度调查包括关于 WebAssembly (Wasm) 的大胆声明:“容器是新常态,WebAssembly 是未来。”...“第二个是它的技术价值主张。它是否吸引了足够多的开发人员并解决了足够多的技术难题,让他们承担使用 Wasm 作为其堆栈的一部分的开销?” 有 WASI 吗?...“更重要的是,组件模型是一种新的应用程序方法,它允许以能力为导向的安全性,并使平台运营商更容易安全地运行应用程序。”...Wasm 也只解决了容器所做的一些问题,他说:“容器更复杂,并且具有更高的操作开销。两者之间的权衡使得两者同步增长是合理的。”

    19210

    IT真的是万能的吗?

    2018-06-05 092303.jpg 朋友最近郁闷了,作为企业信息化主管的他最近经常听到的一句话就是:IT是万能的,不能拒绝用户的任何需求。...由此可见IT管理是一种规范,是有效的监控和管理,是以较低的IT营运成本追求业务部门较高的满意度。也就是说如果用户的需求是不符合规范,不满足于现有业务逻辑和系统架构,IT部也是有权利驳回用户的需求。...不妨设想一下:如果IT真的万能了,能够毫不犹豫去实现用户的需求,来什么做什么,那就不是IT管理了,整个信息化氛围就是大杂烩,这里一块那里一块,不仅项目和专案繁多复杂,后期运维也是一个大坑,没有规范没有制约...需求实现了或者系统上线了是要靠人来运维和使用的,如果人的水平达不到,到时候就不是提高效率而是制约了。...那么,这所谓的“厉害高明的IT”都有谁,又有多少个,请得起吗?

    1.4K90

    JavaScript基础——你真的清楚JavaScript是什么吗?

    什么是JavaScript? 为前端开发,你是否问过自己或者思考过什么是JavaScript吗?JavaScript有什么特点?如果让你让一句话高度介绍,你会怎么说?...小编认为,在你想深入一门语言,必须要清楚理解这们语言有什么特点和其中的运行机制,这是学好一门语言的基础。 JavaScript是一个单线程、非阻塞、异步、解释性语言。 单线程是个什么鬼?...,这样的浏览体验你还会看网页吗?。...异步回调让其拥有了“多线程”的能力,其实并不其然,异步回调是怎么解决并发问题,阻塞问题,不知道各位思考过背后的运行进制吗? 维基百科是这么解释回调函数的:回调函数就是一个通过函数指针调用的函数。...,想必大家都十分清楚JavaScript的特点了,我们一起了解什么是单线程、进程、阻塞、调用堆栈、异步回调、任务队列、事件循环等概念,同时又清楚了JavaScript的运行机制,今天的内容大家都学会了吗

    809100

    React中的setState是异步的吗?

    render(){ console.log("render: " + this.state.count); } 打印结果为 console:0 render:1 所以,从表现上看,setState是异步的...其实,这只是React的障眼法。 setState是同步执行的!但是state并不一定会同步更新(异步更新和同步更新都存在) 1....React.setState()中的异步更新 setState()中有个特别重要的布尔属性isBatchingUpdates(默认为false,),它决定了state是同步更新还是异步更新。...setState调用.png setState 只在合成事件和钩子函数中是“异步更新”的。 异步更新的背后,是同步代码处理("合成事件和钩子函数"的调用在"更新"之前)。...React.setState()中的同步更新 当然,也是有办法同步获取state更新后的值: setTimeout等异步操作中调用setState函数 DOM原生事件 利用setState回调函数 函数式

    2.2K10

    JavaScript sort() 方法你真的了解吗?

    JavaScript sort() 方法你真的了解吗? 有一次,我在刷 LeetCode 的时候,明明觉得没有问题,然而最后还是答案错误。经过调试发现原来问题出现在 sort() 这个数组方法。...默认排序顺序是在「将元素转换为字符串」,然后比较它们的 UTF-16 代码单元值序列时构建的。 我们知道 unicode 编码中,「数字 的用法 arr.sort([compareFunction]) 可以看到 sort 方法是可以传递一个参数 compareFunction,该参数用来指定按某种顺序进行排列的函数。...即 a 和 b 是两个将要被比较的元素: 如果 compareFunction(a, b) 小于 0 ,那么 a 会被排列到 b 之前; 如果 compareFunction(a, b) 等于 0 ,a...或许读者会好奇,sort 底层讲究是如何实现排序的?

    28710

    @Transactional事务是真的好用吗

    声明式事务管理是通过AOP实现的,其本质是在目标方法执行前后进行拦截。在执行方法之前创建或加入一个事务,在方法执行结束后根据情况选择提交或回滚事务。...**注意是不建议过度使用,是过度使用**首先,由于声明式事务通常是通过注解或配置实现的,这可能导致一个问题,即开发者有可能忽略了该事务。**事务被忽略会带来什么问题呢?...事务失效的12种场景总结对于上述问题,若使用编程式事务,则很多情况是可以避免的。...**经历过声明式事务失效问题**我们团队不止一次遭遇声明式事务失效的情况。或许您也曾有此经历,我是深受其害的一位。...我们能做的,是尽力通过机制或规范,减少或降低此类问题的发生几率。实际上,若对阿里巴巴发布的Java开发手册有过深入研读,便会发现其中很多规约非常珍贵,有些内容可能不易理解,甚至显得有些生硬。

    9610

    区块链真的是神话吗?

    大家知道,区块链的几个优势是“透明、合约、不可篡改”,但这些所谓的优势,在某些情境下或许并是优势,并不一定适合各行各业。 我想,大多数人都错了,区块链并非万能的!...在比特币的逻辑中,是所有的节点都有一份完整的账本,因此每个人都能查询到其它人钱包的余额和交易信息,从而确保对方确实有那么多用于支付。...但问题是,这些代码规则在现实社会中并不具备法律效应。智能合约仅仅是编写在软件里的业务规则,这些规则只是编写代码的程序员、或是企业自己来约束的。...不可篡改也并不是那么好 在今年5月20日某区块链应用火了,那就是女生可以将“渣男”的信息长传到区块链上。由于是使用了区块链技术,这些信息理论上是不可篡改的。...这项技术对于信息上传者http://www.sxblsnqp.com/来说,可谓是一大福音。但是对于被上传者呢? 而在此前,也有业内人士希望将新闻上链,这样链上的信息就不可篡改了。

    1.5K60

    区块链游戏真的是无懈可击的吗?

    据数据统计,传统网络游戏行业在过去近20年的时间创造出了2500多亿规模的市场,造就的上市和挂牌公司超过340多家,传统网络游戏是过去中国互联网商业模式的三驾马车之一,可以与网络广告、电商相媲美。...区块链本质上是从改变生产关系的角度来重新塑造传统网络游戏行业的,它会让组织方式和组织形态发生根本性的变化,从而改变重塑游戏行业。传统网络游戏的压力的背后,不可否认,又生出了点恨意来。...目前来看,区块链游戏的主要机会还是在游戏资产相关领域。不管是开创区块链游戏先河的加密猫,还是挖矿探险类游戏应用元链星系、百度绿洲,本质上,都是跟游戏资产所有权和流通相关。...一起来捉妖、莱茨狗的相关资产的获得,也较为容易。 8(13).jpg 当然,这些区块链游戏还处于非常早期的阶段,一上来试图就赚大钱是不现实的。...但不能“玩”、不能“乐”,总归是当前区块链游戏的薄弱环节,急需蜕变。

    2.7K30

    这真的是你了解的网络吗?

    非流水线方式的特点是,客户在收到前一个响应后才能发出下一个请求; 流水线方式的特点是,客户在收到HTTP的响应报文之前就能接着发送新的请求报文 2.3 Cookie与Session的区别 存取方式的不同...能够把Session看做是一个Java容器类。 隐私策略的不同 Cookie存储在客户端阅读器中,对客户端是可见的,客户端的一些程序可能会窥探、复制以至修正Cookie中的内容。...因而像Google、Baidu、Sina这样并发访问量极高的网站,是不太可能运用Session来追踪客户会话的。 浏览器支持的不同 Cookie是需要客户端浏览器支持的。...发送窗口必须根据接收端的大小及时调整发送窗口的大小,这个机制保证了每次TCP传输的数据量都是接收端可以及时处理的。 4.4 差错控制 保证接收端接收的数据是完整未受损伤的,是可靠性的重要保证。...这个时候,会开始执行拥塞检测算法,也就是把门限值变为窗口大小的一半,之后继续执行拥塞避免算法,窗口大小按照线性规律增大。 为你推荐以下文章 你真的了解Linux系统吗?

    84520

    Adam真的是最好的优化器吗?

    没人真的了解)到动量和尺度不变性,Adam 的方方面面都有了相应解读。但是,「所有这些分析并没有给出关于其性能的最终答案」。...各个要素之间的均衡如此微妙,以至于解决非收敛问题所需的微小变化也被认为会带来比 Adam 稍差的性能。 但是,这一切的可能性有多大呢?我的意思是,Adam 真的是最好的优化算法吗?...仔细观察深度学习社区的 idea 创造过程后,我发现了一个规律:人们创建的新架构往往优化算法是固定不变的,而大多数情况下,优化算法是 Adam。这是因为,Adam 是默认优化器。...如果真的是这样,那么对于一个因为专注于机器学习算法的狭窄区域而放弃凸方法的社区而言真是颇具讽刺意味。...此外,关于 Adam 的另一种说法是,如果它真的自适应,那我们就不需要学习率查找器(finder)和调度器(scheduler)了。 ?

    3.1K20

    Adam真的是最好的优化器吗?

    没人真的了解)到动量和尺度不变性,Adam 的方方面面都有了相应解读。但是,所有这些分析并没有给出关于其性能的最终答案。...各个要素之间的均衡如此微妙,以至于解决非收敛问题所需的微小变化也被认为会带来比 Adam 稍差的性能。 但是,这一切的可能性有多大呢?我的意思是,Adam 真的是最好的优化算法吗?...仔细观察深度学习社区的 idea 创造过程后,我发现了一个规律:人们创建的新架构往往优化算法是固定不变的,而大多数情况下,优化算法是 Adam。这是因为,Adam 是默认优化器。...如果真的是这样,那么对于一个因为专注于机器学习算法的狭窄区域而放弃凸方法的社区而言真是颇具讽刺意味。...此外,关于 Adam 的另一种说法是,如果它真的自适应,那我们就不需要学习率查找器(finder)和调度器(scheduler)了。

    58710

    元宇宙,真的是人类的“死路”吗?

    它真的是“割韭菜”吗? 今天这篇文章,小枣君想说说自己的看法。 █ 元宇宙为什么会火? 元宇宙的蹿红速度,远远超过了其它科技概念。我仔细归纳了一下,主要有以下几个方面的原因。...它真的是人类的“死路”吗? 对于元宇宙,很多人都赞同《三体》作者刘慈欣的观点。 大刘是这么说的: “人类的未来,要么是走向星际文明,要么就是常年沉迷在VR的虚拟世界中。...元宇宙究竟是不是人类文明的一次内卷?它真的会引导人类走向死路吗? 对于这两个问题,我个人的答案是:是的。不会。 人类只有一个地球,每个人只有唯一的人生。...那么,它有真正的价值吗? 答案是肯定的。 元宇宙的沉浸式体验,可以满足人们放松身心的需求。元宇宙的虚拟社交,也可以满足人们的社交需求。 此外,我个人认为,元宇宙最大的优点在于,它对人类想象力的释放。...在元宇宙中,我们所有用户的身份数据、社交数据、聊天记录、交易记录、数字资产等,全部控制在一家公司手里。你会放心吗?你愿意吗? 这显然是一个很大的问题。 于是,人们就提出,元宇宙必须是去中心化的。

    47410

    JavaScript定时器:setTimeout与setInterval 定时器与异步循环数组

    深入了解一下 关于JavaScript定时器的知识; setTimeout与setInterval简述 setTimeout与setInterval使用方法基本相同,他们接受两个参数,第一个参数是需要执行的函数...“浏览器UI线程” 在浏览器中,Javascript执行与UI更新是发生在同一个进程(浏览器UI线程)中的。...传送门: Javascript之UI线程与性能优化 使用定时器可以异步处理需要大量运算的任务,它可以适时的避免ui更新与javascript执行之间的冲突 例如在某种极端环境下: for(var i=...; 封装之后的代码: volist:function(name,id,callback,time){ //settimeout 异步循环 name为需要循环的array对象 id为要执行的解析函数...,可以考虑使用setTimeout代替for循环 异步处理任务;

    2.2K60

    你的数字藏品,真的是你的吗?

    近日在票圈看到许多可爱的小老虎,RM 链发起,FISCO BCOS 支持,活动定位是通过区块链技术,探索迎新春+新公益,助力保护“生物多样性”。   ...那些不实在的,直接说自己是数字藏品,说自己是 NFT,不能说他全错,的确是数字内容,但是其对“藏品”“NFT”本身概念中“所有权”的故意掩盖令人无语凝噎。   ...“藏品”也好,“NFT”也罢,抛开艺术的欣赏之外,更重要的一个事情,就是其价值,以及这个价值是否真的属于你(所有权)。   ...这样子好像帮你越过了迈入区块链世界的门槛之一,建立属于你的地址、保存丢了就再也登录不上地址的私钥,但事实上对方也可以直接取消中心化账号和你“获得的 NFT”所在地址的关联,所谓竹篮打水不过如是。   ...在这么做的都是谁,今儿先不点名,只说他们的另一个特征多是联盟链。

    64710

    Javascript是最好的编程语言吗?

    说实话,Javascript几乎是我见过的最烂的编程语言,该语言在设计上存在无数的bug。 请注意,烂不一定是缺点,也不一定是贬低。 但是,Javascript与浏览器捆绑。...烂,无以复加的烂,才是Javascript最大的优势。 哦,不,其实捆绑在浏览器的内部,使你不得不使用Javascript,才是Javascript的最大优势。...简直是冰火两重天。...在前端领域混了这几年,总结了一套前端学习的精讲视频和学习路线,如果有对前端开发感兴趣的伙伴,不管你是想转行,或是大学生,还有工作中想提升自己能力的web前端党,欢迎大家的加入我的前端开发交流群:603985993...Javascript也就那样,不过是一个用于实现逻辑的工具而已。一个工具,谁趁手用谁,怎么趁手怎么用。有朝一日,当你逮着场景和机会,也可以考虑搞一个新的工具。

    1.3K20

    Serverless:这真的是未来吗?(一)

    我们的目标是帮助您切实地评估无服务器计算。 我们希望激发讨论,而不是下意识的反应,无论是赞成还是反对。 希望这些博客文章能帮助您在所有相关人员中展开讨论,就最佳业务方案达成一致。...“这是真的。 不管你使用什么云提供商,你总是使用服务器来运行你的应用程序。必须配置、管理和维护这些服务器。...或者是? 让我们更仔细地看看人们提倡无服务器的原因。 这真的是一种快速开始的方式吗? 使用无服务器可能会使您的应用程序更容易推向市场,但这需要重新考虑如何构建和开发应用程序,这会导致以后的劳动惩罚。...重新设计和重新思考如何使用无服务器技术构建生产就绪的应用程序,可能会给无服务器的旅程带来意想不到的延迟。 真的便宜吗? 无服务器被认为具有成本效益的原因之一是,您只需为使用的计算时间付费。...由于缺乏需要管理的基础设施,无服务器的采集者经常会产生错误的印象,认为他们的应用程序是"安全的”,但这种情况很少发生。

    80750
    领券