JavaScript 函数放入事件循环中



在JavaScript中,有两种类型的函数。

  1. Type-1 -> 在堆栈中立即执行。例如:控制台.log((
  2. Type-2 -> 不会立即执行;而是放入事件循环中。一次 事件发生了,然后回调参数(另一个 函数(将被放置在消息队列中,然后放入 堆栈并最终执行。

    例如: setTimeOut(function(({console.log("print"(} , 1000(;

当运行时遇到上述行时,它立即被置于偶数循环中;经过 1000 mili 秒后,回调函数被推入消息队列。当堆栈变为空闲时,将执行回调函数。

任何人都可以指出我在JavaScript中提供此类函数列表(例如:setTimeOut(((的地方。

谢谢!

JS中存在以下异步回调:

promise.then(/*async*/).catch(/*async*/)

Web API 还添加了一些:

setTimeout(/*async*/, 0)
setInterval(/*async*/, 0)
requestAnimationFrame(/*async*/)
element.onclick = /*async*/;
element.addEventListener("click", /*async*/)
// ... all those other handlers.

[同步] 例如console.log()

这是一个不好的例子。每个函数调用都将立即执行,无法异步执行。但是,回调现在可以回调(同步(,例如:

[1, 2, 3].forEach(console.log)

或者可以异步调用它:

fetch("http://stackoverflow.com").then(console.log);

每个回调都可能被异步回调,但是这仅在代码回调本身被回调时才有效,因此如果它基于上面列出的本机回调执行器之一。

最新更新