【问题标题】:Got confused with the following JS priorities对以下 JS 优先级感到困惑
【发布时间】:2020-08-20 06:24:01
【问题描述】:

在面试过程中,我遇到了这些问题,因此我的代码很困惑。

  1. 哪个有更高优先级的回调或承诺?
  2. Fetch、setInterval 也是 setTimeOut 之类的宏任务吗?

【问题讨论】:

  • 这两个问题都没有意义,尤其是第二个问题。
  • @NeelRathod 如果我通过搜索发现我永远不会在这里发布。
  • @Pointy 你是对的,也许他们也不知道答案,并试图找到说不的东西。

标签: javascript ecmascript-6 webbrowser-control ecmascript-5 ecmascript-2016


【解决方案1】:

这些问题与事件循环有关。 我喜欢 Jake Archibald 的 this explanation

面试问题的答案是

  1. Which one has higher priority callback or promise? -> 我想面试官在这里的意思是微任务和微任务的优先级。由于 Promise 本身接受回调,它可能有点令人困惑。微任务队列的优先级高于宏。这意味着事件循环将首先在微任务队列(又名承诺)中执行所有回调,然后在宏中执行。 (这不是真的,因为还有一个渲染任务队列,它在微任务队列之后立即执行)你可以检查这个video for more info

  2. Are Fetch, setInterval also macro tasks like setTimeOut? -> Fetch 使用 promise - 所以它是微任务。 setInterval 和 setTimeout 是宏任务。

【讨论】:

  • 是的,我认为您对他们的要求是正确的。虽然这是我通过阅读和回答 SO 问题而熟悉的东西,但我质疑这种奥秘是否通常对日常编程有用。
  • 了解代码执行的流程至关重要。您不会每天都面对它,但是当您遇到代码中的某种异步错误时,了解这个主题将节省您的时间和精力。
  • 哦,我很高兴我知道这一点,你的回答是高质量的 :)
猜你喜欢
  • 1970-01-01
  • 2019-11-10
  • 2022-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-28
  • 2020-11-11
  • 1970-01-01
相关资源
最近更新 更多