问题
The javascript engine is executing a function which in turn calls another function (sequentially) and this goes on for say 5s. Meanwhile, several events were triggered either by the user or programmatically.
Can we take for granted that no event will be handled before the outermost function finishes?
/* Example */
function outermost_function() {
function inner_function () {
function innermost_function () {
return;
}
}
}
回答1:
Javascript is single threaded and events are queued in an event loop. JS code does not execute in parallel on the main thread. Code on the main thread is never interrupted.
That being said, it is possible to execute code in parallel with the use of web workers.
There are many excellent articles on the subject of the Javascript event loop, I would recommend starting here
来源:https://stackoverflow.com/questions/41059965/what-is-javascript-atomic-execution-unit-for-events