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

一篇文章彻底搞懂异步,同步,setTimeout,Promise,async「建议收藏」

感谢内容提供者:金牛区吴迪软件开发工作室 之前翻看别的大佬的博客看到了关于setTimeout,promise还有async执行顺序的文章。...start') setTimeout(() => { console.log('setTimeout') },0) async1() new Promise((resolve) => {...5.输出:script end 前五个我们都分析完毕了,接下来到关键点了: 现在异步队列中有三个任务分别是: setTimeout async1的后续内容 promise的.then内容 这三个内容setTimeout...会在最后执行,就好比css权重的优先级,大家固定记住就可以,setTimeout的优先级没有async和promise级别高(其实async和promise是一样的,因为调用async方法时就是返回一个...所以结果很明显了,它们三个的输出顺序是: 6.输出:async1 end 7.输出:promise2 8.输出:setTimeout 在给朋友们随便写一个代码,大家一起猜一下执行结果会是什么: setTimeout

74010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    也谈 setTimeout

    本文作者:IMWeb 江源 原文出处:IMWeb社区 未经同意,禁止转载 也谈 setTimeout setTimeout ,延迟一段事件执行代码,当然这是最基本的用法,这里不说基本用法。...比如这个Why is setTimeout(fn, 0) sometimes useful?, IE6 中出现的奇葩问题竟然可用 setTimeout(func, 0) 神奇地解决。...那么,为什么放入 setTimeout( func, 0 ) 中就可以呢? 其实答案已经出来了, setTimeout 会等到重绘完成才执行代码,自然无往而不利。...setTimeout 进一步理解 可以更深入的思考: setTimeout( func, 0 ) 是延迟 0ms 执行,也就是立刻执行,但为什么还是在重绘之后呢? 重绘肯定会超过 0ms 啊!...setTimeout 中的 this setTimeout 中的 this 被无数人吐槽过,老道直接说这是语言设计错误。

    1.3K10

    setTimeout 进阶详解

    一开始我以为当setTimeout的第二个参数设置为0是直接执行的, 但没想到结果却让我很以为, 打印出的结果是2,3,1 仔细一想确实是那么一回事,因为js是单线程的下面简单分析一下 setTimeout...setTimeout(fn, millisec) 这个函数的正确解释是在js线程没有其他任务,处于空闲状态下,在millisec毫秒后执行fn函数 setTimeout(fn,0)的含义是,指定某个任务在主线程最早可得的空闲时间执行...那么 ,setTimeout()只是将事件插入了"任务队列",必须等到当前代码(执行栈)执行完,主线程才会去执行它指定的回调函数。...要是当前代码耗时很长,有可能要等很久,所以并没有办法保证,回调函数一定会在setTimeout()指定的时间执行

    59510

    setTimeout和requestAnimationFrame

    目录 单线程模型 任务队列 setTimeout setTimeout和setInterval requestAnimationFrame requestidlecallback 单线程模型 JavaScript...实际上,上面的代码并不是立即执行的,这是因为setTimeout有一个最小执行时间,HTML5标准规定了setTimeout()的第二个参数的最小值(最短间隔)不得低于4毫秒。...当指定的时间低于该时间时,浏览器会用最小允许的时间作为setTimeout的时间间隔,也就是说即使我们把setTimeout的延迟时间设置为0,实际上可能为 4毫秒后才事件推入任务队列 setTimeout...setTimeout 和 setInterval区别 setTimeout: 指定延期后调用函数,每次setTimeout计时到后就会去执行,然后执行一段时间后才继续setTimeout,中间就多了误差...('我被调用了'); setTimeout(fn, 100); },100); 这个模式链式调用了setTimeout(),每次函数执行的时候都会创建一个新的定时器。

    1.8K20

    嘭,setTimeout炸了

    ~欢迎点击上方蓝字「歪码行空」快速关注~ ---- 今天要说的很简单,没有setTimeout的基本用法,也没有什么特殊用法。...就是想记录一下setTimeout的一个特殊情况,分享给可能也不知道的你们。...setTimeout的基本写法大家都不陌生,如下: setTimeout(() => { // 说,你倒计时想干什么 }, millisecond) 其中第二个参数是需要延时执行的毫秒数,大家应该都知道这个时间是不准确的...然后我突然开始怀疑setTimeout的倒计时时间问题。于是开始查,最后查到了原因,真的是这货的锅,它因为延时时间过长,炸了。 这就是今天的重点:setTimeout 的延时毫秒数是有限制的。...看完之后,以后如果你也遇到setTimeout失灵的情况,记得想起这茬。

    46720
    领券