Home  >  Article  >  Web Front-end  >  Briefly talk about synchronization and asynchronousness of JavaScript_javascript skills

Briefly talk about synchronization and asynchronousness of JavaScript_javascript skills

WBOY
WBOYOriginal
2016-05-16 15:22:361155browse

1. Draw a picture by hand to illustrate.

2. Why JavaScript is single-threaded (here is a quote from teacher Ruan Yifeng)

JavaScript’s single thread is related to its purpose.

As a browser scripting language, the main purpose of JavaScript is to interact with users and manipulate the DOM.

This determines that it can only be single-threaded, otherwise it will cause very complex synchronization problems.

For example, suppose JavaScript has two threads at the same time. One thread adds content to a certain DOM node, and the other thread deletes the node. In this case, which thread should the browser use?

So, in order to avoid complexity, JavaScript has been single-threaded since its birth. This has become the core feature of this language and will not change in the future.

In order to take advantage of the computing power of multi-core CPUs, HTML5 proposes the Web Worker standard, which allows JavaScript scripts to create multiple threads, but the child threads are completely controlled by the main thread and must not operate the DOM.

So, this new standard does not change the single-threaded nature of JavaScript.

Portal: Detailed explanation of the Event Loop of JavaScript operating mechanism

3. Where is the asynchronous nature of JavaScript

As shown in the picture at the beginning, I personally think that the main thread on the left is synchronous, and the event queue (message queue) on the left is asynchronous.

Of course there are many asyncs in JavaScript:

Ajax(XMLHttpRequest)
Image Tag,Script Tag,iframe(原理类似)
setTimeout/setInterval
CSS3 Transition/Animation
postMessage
Web Workers
Web Sockets
and more…

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn