理论-同步、异步、阻塞、非阻塞
页面js(阻塞(等待文件读取函数执行完成)和非阻塞(不等待文件读取函数执行完成));文件读取(同步(不会立即返回,需等待读取操作完成才返回)和异步(会立即返回并在文件读取完成后执行回调函数));
在异步非阻塞的情况下,可以使用 Node.js 中的文件读取操作来展示。在 Node.js 中,可以使用回调函数或者 Promise 来实现异步非阻塞的文件读取操作。以下是使用回调函数的例子:
const fs = require('fs');
// 异步非阻塞的文件读取操作,使用回调函数
fs.readFile('file.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});
console.log('异步非阻塞文件读取操作完成');
在这个例子中,fs.readFile
是一个异步非阻塞的文件读取操作。在调用 fs.readFile
后,JavaScript 代码会继续执行后续的操作,而不必等待文件读取完成。当文件读取完成后,回调函数会被调用并处理文件数据。这种方式下,文件读取的操作是异步的,不会阻塞后续代码的执行。
另外,使用 Promise 也可以实现异步非阻塞的文件读取操作,下面是一个使用 Promise 的例子:
const fs = require('fs').promises;
// 异步非阻塞的文件读取操作,使用 Promise
fs.readFile('file.txt', 'utf8')
.then(data => {
console.log(data);
})
.catch(err => {
console.error(err);
});
console.log('异步非阻塞文件读取操作完成');
在这个例子中,fs.promises.readFile
返回一个 Promise 对象,使得文件读取操作变为异步非阻塞的。当文件读取完成后,Promise 的 then
方法会被调用来处理文件数据,而不会阻塞后续代码的执行。
这些例子展示了异步非阻塞的情况:文件读取操作是异步的,并且在读取文件的同时不会阻塞后续代码的执行。