在JavaScript中,有两种类型的函数。
- Type-1 -> 在堆栈中立即执行。例如:控制台.log((
-
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);
每个回调都可能被异步回调,但是这仅在代码回调本身被回调时才有效,因此如果它基于上面列出的本机回调执行器之一。