Wil*_*een 4 javascript asynchronous callback
真的很想了解javascript的事件队列。我目前的理解如下。
let doSomething = (callback) => {
callback("first");
};
let foo = (text) => {
console.log(text);
};
doSomething(foo);
setTimeout(() => {
console.log("hey");
});
console.log("after");Run Code Online (Sandbox Code Playgroud)
doSomething 的回调不是异步操作,因此不会放入回调队列中。然而,setTimeout 是一个异步操作,因此将 this 放入回调队列中。因为回调队列是在 JavaScript 线程结束后调用的,所以该setTimeout()函数是最后调用的。
setTimeout()?我现在的理解正确吗?
是的,它将按顺序执行这些功能。由于您doSomething在定义之前调用,因此setTimeout它将首先完成。
究竟是什么使操作成为异步操作?这是因为 Javascript 本身有某些默认情况下是异步的操作吗?
当代码的执行不停止主线程的执行时,它是异步的。JavaScript 是单线程的。xmlHTTPRequests、间隔和超时是异步函数的示例。事件也是异步的。但正如你所说,它们都是内置的。
您可以在 javascript 中自己进行异步操作,而不使用像 setTimeout() 这样的内置异步操作吗?
在过去并不那么容易。正如我所说,您可以创建自定义事件和网络工作人员。如今: