真的想了解javascript的事件队列。我目前的理解如下。
let doSomething = (callback) => {
callback("first");
};
let foo = (text) => {
console.log(text);
};
doSomething(foo);
setTimeout(() => {
console.log("hey");
});
console.log("after");

doSomething的回调不是异步操作,因此它不会放在回调队列中。但是,setTimeout是一个异步操作,因此放在回调队列中。因为在javascript线程完成后调用了回调队列,所以最后调用setTimeout()
函数。
setTimeout()
之类的内置异步操作?答案 0 :(得分:2)
我目前的理解是否正确?
是的,它将按顺序执行这些功能。由于您在定义doSomething
之前致电setTimeout
,因此会先完成。{/ p>
究竟是什么使操作成为异步操作?这是因为Javascript本身有某些默认是异步的操作吗?
当代码的执行没有停止主线程的执行时,它是异步的。 JavaScript是单线程的。 xmlHTTPRequests , interval 和 timeouts 是异步函数的示例。 事件也是异步的。但正如你所说,它们都是内置的。
你可以自己在javascript中自己进行异步操作而不使用像setTimeout()这样的内置异步操作吗?
过去并不那么容易。正如我所说,您可以制作自定义事件和Web工作者。如今: