Home >Web Front-end >Front-end Q&A >What is ajax synchronous and asynchronous
ajax synchronization means that when the JavaScript code is loaded into the current ajax, all code loading in the page will stop, and the page will be in a state of suspended animation. When the ajax is executed, the page will be in the state of suspended animation. The code Continue to run; ajax asynchronous means that other codes can also run when the current ajax code is running.
The operating environment of this article: windows10 system, javascript1.8.5&&html5 version, Dell G3 computer.
(1) Synchronization means that when the JS code is loaded into the current AJAX, all the code in the page will stop loading, and the page will be in a state of suspended animation. When this After AJAX is executed, the page's suspended state will be released and the code will continue to run.
(2) Asynchronous means that other codes can run while the current AJAX code is running.
jquery's async:false, this attribute
The default is true: asynchronous, false: synchronous.
Examples are as follows:
$.ajax({ url: prefix + "/exportById", data: {ids:ids}, type: 'POST', traditional: true, cache:false, async:false, success: function (result) { if (result.code == web_status.SUCCESS) { window.location.href = ctx + "common/download?fileName=" + result.msg + "&delete=" + true; } else { alert("导出失败"); } } });
Extended knowledge
How does AJAX implement synchronous requests?
Ajax requests are divided into synchronous requests and asynchronous requests, but the default ones are asynchronous requests. So, when we want to use ajax to request synchronously, how should we implement this synchronous request? The following article will introduce to you the implementation of ajax synchronization request. Friends in need can refer to it. I hope it will be helpful to you.
First of all, we should know that synchronization is a single thread, and the code is executed in order. When the js code is loaded into the current synchronous ajax request, all other codes on the page stop loading, and the page is in a state of suspended animation. , until the request is completed, other requests will be executed.
Secondly, we should know that ajax is divided into two request methods: synchronous and asynchronous according to the value of async. When the value of async is true, it is the asynchronous request method. On the contrary, when the value of async is false, it is the asynchronous request method. Synchronous request method, so to implement ajax synchronous request, you only need to set the value of async to false.
$.ajax( type:“POST”/“GET” url:"", data:{}, dataType:"json", async:false, //同步 success:function(response){ } );
What is the difference between Ajax synchronous and asynchronous requests and what are the usage scenarios?
Understanding 1:
AJAX is divided into two execution methods: synchronous (async = false) and asynchronous (async = true) according to the value of async. ; In the W3C tutorial, it is recommended to use asynchronous execution;
Let’s distinguish the difference between synchronization and asynchronous execution:
Asynchronous: In asynchronous mode, when we use AJAX to send the request, There may still be code that needs to be executed. At this time, the server may not have responded to our request due to various reasons, but because we use asynchronous execution, the remaining code in all functions containing AJAX request code will continue to execute. If we hand over the request result to another JS function for processing, then it will be like two threads executing at the same time.
Synchronization: In synchronous mode, after we use AJAX to send the request, there is still code that needs to be executed. We also hand over the server response to another JS function for processing, but the code execution at this time Yes: When the server does not respond or the JS function that processes the response result has not processed the return, the remaining code of the function containing the request code cannot be executed. Just like a single thread, it enters the blocking state after the request is sent, and the remaining code will not continue to execute until it touches the blocking state.
How to choose synchronous or asynchronous mode? To answer this question, we can answer it through the following possible questions:
After sending the AJAX request, we still need to continue to process the server's response result. If we use the asynchronous request mode and do not The processing of the results is handled by another JS function. At this time, this situation may occur: the response to the asynchronous request has not yet arrived, and the function has finished executing the return statement, which will cause the return result to be an empty string.
Understanding 2:
Synchronous: Send a request, wait for the return, and then send the next request
Asynchronous: Send a request, do not wait Return, you can send the next request at any time
Synchronization can avoid deadlocks and dirty data reading. It is generally used when sharing a certain resource. If everyone has modification permissions and modifies a file at the same time, It is possible for one person to read content that another person has deleted, an error will occur, and the synchronization will be modified in order.
Asynchronous can improve efficiency. Nowadays, CPUs are dual-core or quad-core. If you process asynchronously, you can do multiple tasks at the same time. Of course, you must ensure that it can be processed concurrently.
The biggest difference between synchronous and asynchronous is. One needs to wait, the other does not.
Sending text messages, for example, is an asynchronous example. The initiator does not care about the receiver's status. There is no need to wait for the return information from the receiver, and the next transmission can be carried out.
Telephone is an example of synchronization. The initiator needs to wait for the receiver, and the communication does not start until the call is connected. Need to wait for the return information from the receiver
The synchronization issues we often discuss mostly occur in data sharing issues in multi-threaded environments. That is, when multiple threads need to access the same resource, they need to be in a certain order to ensure that the resource can only be accessed by one thread at a specific moment. If asynchronous is used, the running results of the program will be unpredictable. Therefore, in this case, the data must be synchronized, that is, only one process can access the resource, and other threads must wait.
The mechanisms to achieve synchronization mainly include critical sections, mutexes, semaphores and events
Critical sections: access public resources or A piece of code that is fast and suitable for controlling data access. Only one thread is allowed to access shared resources at any time. If multiple threads try to access public resources, after one thread enters, other threads trying to access public resources will be suspended and wait until they enter the critical section. After the thread leaves and the critical section is released, other threads can preempt it.
Mutex: adopts mutually exclusive object mechanism. Only threads that own mutually exclusive objects have permission to access public resources. Because there is only one mutually exclusive object, it is guaranteed that public resources will not be accessed by multiple threads at the same time. Mutex can not only realize the safe sharing of public resources of the same application, but also realize the safe sharing of public resources of different applications. Mutex is more complicated than critical section. Because the use of mutual exclusion can not only achieve safe sharing of resources among different threads of the same application, but also achieve safe sharing of resources between threads of different applications.
Semaphore: It allows multiple threads to access the same resource at the same time, but it needs to limit the maximum number of threads that can access this resource at the same time. The way the semaphore object synchronizes threads is different from the previous methods. The signal allows multiple threads to use shared resources at the same time, which is the same as the PV operation in the operating system. It indicates the maximum number of threads that can access shared resources simultaneously. It allows multiple threads to access the same resource at the same time, but needs to limit the maximum number of threads that can access this resource at the same time.
Events: Keep thread synchronization through notification operations, and also facilitate the priority comparison of multiple threads.
[Related tutorial recommendations: AJAX video tutorial]
The above is the detailed content of What is ajax synchronous and asynchronous. For more information, please follow other related articles on the PHP Chinese website!