JavaScript asynchronous written for beginners, has certain reference value, interested friends can refer to it
One day, I suddenly wrote a method to call data from the background and display it on the front page , but the output result is always empty and undefined, and no data can be obtained. After searching for information from various sources, I discovered that I had fallen into the "pit" of JS asynchronous.
We often hear the concepts of single-threaded, multi-threaded, synchronized, and asynchronous, so what exactly are these things?
So let’s start with the concepts above
Basic understanding of single-threaded, multi-threaded, synchronized, and asynchronous
Each running program ( A process) has at least one thread, called the main thread. The main thread is created when starting the program and is used to execute the main function.
1. A single thread is a thread with only one main thread. The code runs sequentially from top to bottom. The main thread is responsible for executing all the code of the program (UI display and refresh, network requests, local storage, etc.) [One thread It’s a bit tiring to do all the things just thinking about it]
2. Multi-threading, as the name suggests, is a program with multiple threads that can be created by the user. Several processes created independently by users are child threads relative to the main thread. The child thread and the main thread are independent running units, and their respective executions do not affect each other, so they can be executed concurrently.
Do you feel a little dizzy just listening to these dry theories? Coincidentally, I was also dizzy when I first saw it.
In the process of looking for information, I found such a vivid metaphor from others.
For example, single-threading means that you go to the kitchen to cook and cook, and one person runs back and forth; multi-threading means that there are two people, one cooking alone and the other cooking.
That should make it easier to understand, right?
And what are synchronous and asynchronous?
We use a simple life example to illustrate.
You call to book a hotel and ask the staff if there is a room. At this time, the staff needs to check whether there is a room before they can answer you.
Synchronization means not hanging up the phone and waiting until the staff tells you whether there is a room.
Asynchronous means hanging up the phone, you go do other things, such as eating and drinking, and the staff will call you after finding the information.
So here comes our topic
What is the asynchronous operation of JS?
The execution environment of JS is single-threaded. That is to say, when the program is executed sequentially, only one task can be executed at a time. If the program wants to run further, it must wait for the current task to be executed. No matter how long the current task takes to execute (if the subsequent program rushes out, it will be really uncomfortable to wait).
In order to solve the uncomfortable blocking problem of subsequent programs. JavaScript has an asynchronous processing mode, which is actually delayed processing.
Let’s give an example to illustrate.
var getUserInfo = function () { $.getJSON("http://www.easy-mock.com/mock/5a09868228b23066479b8379/ajaxData/getUserInfo", function () { return data; }); } var data = getUserInfo(); renderUserInfo(data)
The getUserInfo function is called. It may take a lot of time to retrieve data from the background. This requires renderUserInfo to wait until the data is retrieved before it can run. Fortunately, JS has asynchronous operations. When fetching data, you don't need to wait for renderUserInfo to fetch the data, but execute it directly.
That being said, in what order are these two functions executed? Don't worry, let's debug it:
var getUserInfo = function () { console.log('aaa'); $.getJSON("http://www.easy-mock.com/mock/5a09868228b23066479b8379/ajaxData/getUserInfo", function () { console.log('bbb'); return data; }); } var data = getUserInfo(); console.log(data); console.log('ccc'); renderUserInfo(data);
I thought the output of sequential execution was "aaa", "bbb", "ccc", right?
However, things are not that simple. Let's take a look at the console output:
#The output results are not sequential.
That is to say, when the function is executed to getJSON to fetch data, the program does not wait for it to fetch the data before executing the next step. Instead, it skips the stage of fetching data and directly executes the output data. Therefore, data Also empty.
This is the asynchronous mechanism of JS.
The above is what I compiled for everyone. I hope it will be helpful to everyone in the future.
Related articles:
How to use JavaScript to achieve the left menu effect
How to achieve the select-all-cancel effect in JavaScript
How to call vuex to store interface data in vue.js
The above is the detailed content of About JavaScript Async (Detailed Tutorial). For more information, please follow other related articles on the PHP Chinese website!

The future trends of Python and JavaScript include: 1. Python will consolidate its position in the fields of scientific computing and AI, 2. JavaScript will promote the development of web technology, 3. Cross-platform development will become a hot topic, and 4. Performance optimization will be the focus. Both will continue to expand application scenarios in their respective fields and make more breakthroughs in performance.

Both Python and JavaScript's choices in development environments are important. 1) Python's development environment includes PyCharm, JupyterNotebook and Anaconda, which are suitable for data science and rapid prototyping. 2) The development environment of JavaScript includes Node.js, VSCode and Webpack, which are suitable for front-end and back-end development. Choosing the right tools according to project needs can improve development efficiency and project success rate.

Yes, the engine core of JavaScript is written in C. 1) The C language provides efficient performance and underlying control, which is suitable for the development of JavaScript engine. 2) Taking the V8 engine as an example, its core is written in C, combining the efficiency and object-oriented characteristics of C. 3) The working principle of the JavaScript engine includes parsing, compiling and execution, and the C language plays a key role in these processes.

JavaScript is at the heart of modern websites because it enhances the interactivity and dynamicity of web pages. 1) It allows to change content without refreshing the page, 2) manipulate web pages through DOMAPI, 3) support complex interactive effects such as animation and drag-and-drop, 4) optimize performance and best practices to improve user experience.

C and JavaScript achieve interoperability through WebAssembly. 1) C code is compiled into WebAssembly module and introduced into JavaScript environment to enhance computing power. 2) In game development, C handles physics engines and graphics rendering, and JavaScript is responsible for game logic and user interface.

JavaScript is widely used in websites, mobile applications, desktop applications and server-side programming. 1) In website development, JavaScript operates DOM together with HTML and CSS to achieve dynamic effects and supports frameworks such as jQuery and React. 2) Through ReactNative and Ionic, JavaScript is used to develop cross-platform mobile applications. 3) The Electron framework enables JavaScript to build desktop applications. 4) Node.js allows JavaScript to run on the server side and supports high concurrent requests.

Python is more suitable for data science and automation, while JavaScript is more suitable for front-end and full-stack development. 1. Python performs well in data science and machine learning, using libraries such as NumPy and Pandas for data processing and modeling. 2. Python is concise and efficient in automation and scripting. 3. JavaScript is indispensable in front-end development and is used to build dynamic web pages and single-page applications. 4. JavaScript plays a role in back-end development through Node.js and supports full-stack development.

C and C play a vital role in the JavaScript engine, mainly used to implement interpreters and JIT compilers. 1) C is used to parse JavaScript source code and generate an abstract syntax tree. 2) C is responsible for generating and executing bytecode. 3) C implements the JIT compiler, optimizes and compiles hot-spot code at runtime, and significantly improves the execution efficiency of JavaScript.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Atom editor mac version download
The most popular open source editor

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

Dreamweaver CS6
Visual web development tools

SublimeText3 Chinese version
Chinese version, very easy to use

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software
