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

Settimeout()不等待。为什么?

Settimeout()函数是JavaScript中的一个定时器函数,用于在指定的时间后执行一段代码。它不会阻塞程序的执行,而是将代码放入事件队列中,等待指定的时间后执行。

Settimeout()不等待的原因是因为JavaScript是单线程的,它使用事件循环来处理代码的执行。当遇到Settimeout()函数时,它会将要执行的代码放入事件队列中,并继续执行后面的代码,不会等待Settimeout()的计时器时间结束。

这种设计是为了避免阻塞程序的执行。如果Settimeout()函数是同步的,即等待计时器时间结束后再执行后面的代码,那么在计时器时间内,程序将无法响应其他事件,导致用户体验不佳。

应用场景:

  1. 延迟执行代码:可以使用Settimeout()函数在一定时间后执行某些代码,例如延迟加载图片、延迟执行动画效果等。
  2. 定时任务:可以使用Settimeout()函数定时执行某些任务,例如定时发送心跳包、定时更新数据等。

腾讯云相关产品: 腾讯云提供了云计算相关的产品和服务,其中与定时任务相关的产品是云函数(SCF)。云函数是一种无服务器计算服务,可以在云端运行代码,支持定时触发、事件触发等多种触发方式。您可以使用云函数来实现定时任务的需求。

产品介绍链接地址:https://cloud.tencent.com/product/scf

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

相关·内容

为什么要用 setTimeout 模拟 setInterval ?

所以,在 setInterval 被推入任务队列时,如果在它前面有很多任务或者某个任务等待时间较长比如网络请求等,那么这个定时器的执行时间和我们预定它执行的时间可能并不一致。...,some event 执行结束后执行 T1 定时器代码;又过了 100ms , T2 定时器被添加到队列中,主线程还在执行 T1 代码,所以等待;又过了 100ms ,理论上又要往队列里推一个定时器代码...答案是:一秒后立即输出 5 个 5因为 for 循环了五次,所以 setTimeout 被 5 次添加到时间循环中,等待一秒后全部执行。 为什么是一秒后输出了 5 个 5 呢?...简单来说,因为 for 是主线程代码,先执行完了,才轮到执行 setTimeout 。 当然为什么输出不是 1 到 5 ,这个涉及到作用域的问题了,这里就不解释了。...() {}, 20); 3.终止定时器 if (timer) { window.clearSetTimeout(timer); timer = null; } 参考 为什么要用 setTimeout

1.2K10
  • 为什么要用 setTimeout 模拟 setInterval ?

    为什么要用 setTimeout 模拟 setInterval ? 在[JS 事件循环之宏任务和微任务](.....所以,在 setInterval 被推入任务队列时,如果在它前面有很多任务或者某个任务等待时间较长比如网络请求等,那么这个定时器的执行时间和我们预定它执行的时间可能并不一致。...,some event 执行结束后执行 T1 定时器代码;又过了 100ms,T2 定时器被添加到队列中,主线程还在执行 T1 代码,所以等待;又过了 100ms,理论上又要往队列里推一个定时器代码,*...答案是:一秒后立即输出 5 个 5   因为 for 循环了五次,所以 setTimeout 被 5 次添加到时间循环中,等待一秒后全部执行。 **为什么是一秒后输出了 5 个 5 呢?...** 简单来说,因为 for 是主线程代码,先执行完了,才轮到执行 setTimeout。 当然为什么输出不是 1 到 5,这个涉及到作用域的问题了,这里就不解释了。

    1.2K40

    CA2007:直接等待任务

    值 规则 ID CA2007 类别 可靠性 修复是中断修复还是非中断修复 非中断 原因 异步方法会直接等待 Task。...规则说明 异步方法直接等待 Task 时,延续任务通常会出现在创建任务的同一线程中,具体取决于异步上下文。 此行为可能会降低性能,并且可能会导致 UI 线程发生死锁。...如何解决冲突 若要解决冲突,请在等待的 Task 上调用 ConfigureAwait。 可以为 continueOnCapturedContext 参数传递 true 或 false。...示例 下面的代码片段会生成此警告: public async Task Execute() { Task task = null; await task; } 若要解决此冲突,请在等待的...例如,在 WinForms 或 WPF 应用程序中的按钮单击事件处理程序中编写代码时,通常情况下,等待的延续任务应在 UI 线程上运行,因而需要将延续任务安排回原始上下文的默认行为。

    1.4K20

    前端进阶之setTimeout 为什么会出现误差?

    microtask) process.nextTick promise Object.observe(曾经是提案,如今已经废除) MutationOberver 宏任务(macrotask) script setTimeout...setImmediate I/O UI渲染 执行顺序如下: 执行同步代码,这是宏任务 执行栈为空,查询是否有微任务要执行 必要时渲染UI 进行下一轮的 EventLoop ,执行宏任务中的异步代码 setTimeout...我们看以下代码: setTimeout(function () { console.log('biubiu');}, 1000);某个执行时间很长的函数(); 如果定时器下面的函数执行要 5秒钟,...5秒之后再大圆,函数占用了当前 执行栈,要等执行栈执行完毕后再去读取 微任务(microtask),等 微任务(microtask) 完成,这个时候才会去读取 宏任务(macrotask) 里面的 setTimeout...还有一种情况如下: setTimeout(function() { console.log('嘤嘤嘤');}, 0); 因为 定时器 最小 delay 是 4毫秒,所以小于这个数字,即使 执行栈

    92610

    JavaScript中Promise里的代码为什么setTimeout先执行?

    所以,我们首先应该形成一个感性的认知:一个 JavaScript 引擎会常驻于内存中,它等待着我们(宿主)把 JavaScript 代码或者函数传递给它执行。...宏观和微观任务 JavaScript 引擎等待宿主环境分配宏观任务,在操作系统中,通常等待的行为都是一个事件循环,所以在 Node 术语中,也会把这个部分称为事件循环。...Promise Promise 是 JavaScript 语言提供的一种标准化的异步管理方式,它的总体思想是,需要进行 io、等待或者其它异步操作的函数,返回真实结果,而返回一个“承诺”,函数的调用方可以在合适的时机...,选择等待这个承诺兑现(通过 Promise 的 then 方法的回调)。...接下来我们试试跟 setTimeout 混用的 Promise。

    86320

    JavaScript执行(一):Promise里的代码为什么setTimeout先执行?

    所以,我们首先应该形成一个感性的认知:一个 JavaScript 引擎会常驻于内存中,它等待着我们(宿主)把 JavaScript 代码或者函数传递给它执行。...宏观和微观任务 JavaScript 引擎等待宿主环境分配宏观任务,在操作系统中,通常等待的行为都是一个事件循环,所以在 Node 术语中,也会把这个部分称为事件循环。...Promise Promise 是 JavaScript 语言提供的一种标准化的异步管理方式,它的总体思想是,需要进行 io、等待或者其它异步操作的函数,返回真实结果,而返回一个“承诺”,函数的调用方可以在合适的时机...,选择等待这个承诺兑现(通过 Promise 的 then 方法的回调)。...接下来我们试试跟 setTimeout 混用的 Promise。

    59210
    领券