账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    为什么setTimeout永远比setImmediate早?
    26
    0
    setImmediate(function A() {
        console.log('2')
    })
    setTimeout(function B() {
        console.log('1')
    }, 0)

    从网上的文章来看,理论上应该是setImmediate更快(放到task队列的前面),然而实际并不是如此。(Node 9.x)

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • setTimeoutsetImmediate 都是在JavaScript中用于定时执行任务的函数。它们的执行顺序和延迟时间有所不同。

      setTimeout 的延迟时间是可选的,它的时间是在函数执行的上下文环境中确定的。如果提供了延迟时间,那么 setTimeout 将按照指定的时间间隔(以毫秒为单位)执行任务。

      例如,如果我们有一个函数 myFunction,它会在一段时间后执行,我们可以这样设置一个 setTimeout 对象:

      javascript setTimeout(myFunction, 5000);

      这将让 myFunction 在 5 秒后执行。

      setImmediate 则是 Node.js 提供的一个用于立即执行函数的函数。它的延迟时间是不可选的,也就是说,setImmediate 不会等待任务执行完成,而是立即执行。

      例如,如果我们有一个函数 myFunction,它会在 5 秒后执行,我们可以这样设置一个 setImmediate 对象:

      javascript setImmediate(myFunction);

      这将让 myFunction 在 5 秒后立即执行。

      因此,setTimeout 的延迟时间是可选的,而 setImmediate 的延迟时间是不可选的。所以,setTimeout 能够更早地执行任务,因为它会在函数执行的上下文环境中确定执行的时间。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部