Home > Article > Web Front-end > What is the difference between node synchronization and asynchronousness?
The difference between node synchronization and asynchronous is: synchronization means that the program runs from top to bottom. The next step can only be executed after the previous step is executed; asynchronous means that you do not need to wait for the above to run before running the following. Operation, asynchronous programming can be implemented by relying on callbacks, but it does not mean that the program after the callback is asynchronous.
The operating environment of this tutorial: windows10 system, nodejs version 12.19.0, Dell G3 computer.
Synchronization means that the program runs from top to bottom, while asynchronous means that you do not need to wait for the above to run before running the following operations. . Asynchronous programming relies on callbacks, but it cannot be said that the program becomes asynchronous after using callbacks.
Synchronous English: sync (synchronization)
Asynchronous English: async (asynchronous)
Synchronous API: Only after the current API execution is completed, execution can continue Next API
console.log('before'); console.log('after');
Asynchronous API: The execution of the current API will not block the execution of subsequent code
console.log('before'); setTimeout( () => { console.log('last'); }, 2000); console.log('after');
The difference between synchronous API and asynchronous API (get return Value)
Synchronous API can get the result of API execution from the return value, but asynchronous API cannot (it seems that writing return in asynchronous API cannot get the result?)
// 异步 function getMsg () { setTimeout(function () { return { msg: 'Hello Node.js' } }, 2000); } const msg = getMsg (); //函数没有写return 默认是返回 undefined cnsole.log(msg); // 输出的是 undefined,因为定时器还没执行完就执行了输出
Callback function
Define your own function and let others call it.
// getData函数定义 function getData (callback) {} // getData函数调用 getData (() => {}); /*例子------------------*/ function getMsg (callback) { setTimeout(function () { callback ({ msg: 'Hello Node.js' }) }, 2000); } getMsg (function (msg) { console.log(msg); });
The difference between synchronous API and asynchronous API (code execution order)
The synchronous API is executed sequentially from top to bottom. The previous code will block the execution of the following code
The asynchronous API will not wait for the API execution to be completed before executing the code.
Code execution sequence analysis
JavaScript is divided into a synchronous code execution area and an asynchronous code execution area. Between them There is a callback function queue connection. First, JavaScript will execute all the contents of the synchronous code area, and then go to the asynchronous code area to execute the code, find the code block that has been executed in the asynchronous code area, and immediately find the callback function corresponding to the asynchronous code block and place it in the synchronous code execution area. To execute the asynchronous API
#read file API in Node.js, there is a callback function.
Event monitoring API also has callback functions. (The event processing function is the callback function, and the event listening API is the asynchronous API)
If the execution of the code behind the asynchronous API depends on the execution result of the current asynchronous API, but in fact the asynchronous API has not returned when the subsequent code is executed As a result, how to solve this problem?
For example, there is a requirement: read file A, file B, and file C in sequence (after reading A, then read B, then read C, it cannot be read at the same time)
If the above requirement is realized, It will cause the operation of reading B to be placed in the callback function of A, and the operation of reading C is placed in the callback function of B, resulting in many nesting levels (callback hell)
const fs = require('fs'); fs.readFile('./1.txt', 'utf8', (err, result1) => { console.log(result1) fs.readFile('./2.txt', 'utf8', (err, result2) => { console.log(result2) fs.readFile('./3.txt', 'utf8', (err, result3) => { console.log(result3) }) }) });
Recommended study: " nodejs video tutorial》
The above is the detailed content of What is the difference between node synchronization and asynchronousness?. For more information, please follow other related articles on the PHP Chinese website!