📜  Node.js 中同步函数相对于异步函数的优势是什么?

📅  最后修改于: 2022-05-13 01:56:29.529000             🧑  作者: Mango

Node.js 中同步函数相对于异步函数的优势是什么?

Node.js 为我们提供了一个内置的 fs(文件系统)模块,用于处理读取记录、编写文档、擦除文档等任务的不同文档。 fs 模块可以使用下面的解释来介绍:

句法:

npm introduce fs --save

注意:上述顺序中的 npm 代表集线器包管理器,从中可以在 Node.js 中引入每个条件。

要使用 fs 模块,请在代码中附加随附的断言:

const fs = require('fs');

fs 模块具有各种文档处理任务,如读取记录、编写文档、粘贴文档、关闭文档、擦除记录等。每一项活动都可以根据客户的先决条件以协调和非并行的方式进行。

1.同步方法:同步容量阻塞程序的执行,直到文档活动被执行。这些能力也称为阻碍能力。同步技术将文件描述符作为最后一个争用。文档描述符是对打开记录的引用。它是使用 fs 模块的 fs.open() 策略打开记录后返回的文档的数字或参考 id。通过将“同步”附加到容量名称中,可以同时执行所有另类技术。 Node.js 中 fs 模块的部分同步技术是:

  • fs.readFileSync() 方法
  • fs.renameSync() 方法
  • fs.writeSync() 方法
  • fs.writeFileSync() 方法
  • fs.fsyncSync() 方法
  • fs.appendFileSync() 方法
  • fs.statSync() 方法
  • fs.readdirSync() 方法
  • fs.existsSync() 方法

同步学习的好处:

  1. 参与者之间的互动。
  2. 参与者之间的知识和经验交流。
  3. 实时反馈给导师。
  4. 培训按固定时间表进行。

示例 1:同步读取技术:

让我们创建一个名为 main.js 的 JavaScript 记录和一个名为 sample.txt 的文本文档,并带有随附的断言:

GeeksForGeeks is a Computer Science portal.

在 main.js 记录中添加随附的代码并执行它:

Javascript
var fs = require("fs");
 
// Synchronous read
console.log("Synchronous read method:");
var information = fs.readFileSync('sample.txt');
console.log("Data in the document is - "
            + data.toString());


Javascript
var fs = require("fs");
 
// Coordinated read
console.log("Synchronous attach method:");
var information = "\nGeeksForGeeks is a Computer Science entrance.";
 
// Attach information to record
fs.appendFileSync('sample.txt', information, 'utf8');
console.log("Data is attached to record effectively.")
information = fs.readFileSync('sample.txt');
console.log("Data in the record subsequent to adding is - \n" +
data.toString());


Javascript
var fs = require("fs");
 
// Offbeat read
console.log("Asynchronous read method:");
fs.readFile('sample.txt', work(blunder, information){
    in the event that(blunder) {
        return console.error(err);
    }
  console.log("Data in the document is - "
      + data.toString());
});


Javascript
var fs = require("fs");
const information =
    "\nGeeksForGeeks is a Computer Science entrance.";
 
// Asynchronously attaching information to document
fs.appendFile('sample.txt', information, 'utf8',
 
    // Callback work
    function (err) { 
   
          // In event that(fail) toss blunder
        // In the event that no mistake
        console.log("Data is added to document effectively.")
    });
    fs.readFile('sample.txt', work(fail, information) {
        if(fail) {
            return console.error(err);
        } 
    console.log(
        "Data in the record in the wake of affixing: \n" +
        data.toString()
    );
});


输出:

示例 2:同步附加策略

让我们创建一个名为 main.js 的 JavaScript 记录和一个名为 sample.txt 的文本文档,并带有随附的断言:

Hi World !

在 main.js 记录中添加随附的代码并执行它:

Javascript

var fs = require("fs");
 
// Coordinated read
console.log("Synchronous attach method:");
var information = "\nGeeksForGeeks is a Computer Science entrance.";
 
// Attach information to record
fs.appendFileSync('sample.txt', information, 'utf8');
console.log("Data is attached to record effectively.")
information = fs.readFileSync('sample.txt');
console.log("Data in the record subsequent to adding is - \n" +
data.toString());

输出:

2.异步方式:异步函数不妨碍程序的执行,无论过去的订单是否没有登记结果,每个订单都在过去的订单之后执行。过去的订单在幕后运行,一旦处理完毕,就会给结果带来负担。因此,这些能力被称为非阻碍能力。他们接受回调工作作为最后一个边界。异步功能在很大程度上比同时功能更受欢迎,因为它们不会阻碍程序的执行,而协调功能会阻止程序的执行,直到它完成处理。 Node.js 中 fs 模块的一部分非并发策略是:

  • fs.readFile() 方法
  • fs.rename() 方法
  • fs.write() 方法
  • fs.writeFile() 方法
  • fs.fsync() 方法
  • fs.appendFile() 方法
  • fs.stat() 方法
  • fs.readdir() 方法
  • fs.exists() 方法

耗费时间处理的繁重任务。例如,从数据集中查询大量信息应该异步完成,因为在任何情况下都可以执行不同的活动,并以这种方式减少程序的执行时间。

异步学习的好处:

  1. 参与者可以根据自己的时间和时间表进行学习。
  2. 减少培训师和人力资源经理的工作量。
  3. 自动化任务减少了重复性工作,例如在线课程和评分考试。
  4. 员工和客户在工作时间花在教室或圆形剧场的时间更少。
  5. 没有与其他人的实时交互。

Example1:异步读取技术

第 1 阶段:让我们创建一个名为 main.js 的 JavaScript 文档和一个名为 sample.txt 的文本记录,并附带断言:

GeeksForGeeks is a Computer Science portal.

第 2 阶段:在 main.js 记录中添加随附的代码并执行它:

Javascript

var fs = require("fs");
 
// Offbeat read
console.log("Asynchronous read method:");
fs.readFile('sample.txt', work(blunder, information){
    in the event that(blunder) {
        return console.error(err);
    }
  console.log("Data in the document is - "
      + data.toString());
});   

输出:

示例 2:异步附件技术

第 1 阶段:让我们创建一个名为 main.js 的 JavaScript 文档和一个名为 sample.txt 的文本记录,并附带断言:

Hi World !

第 2 阶段:在 main.js 记录中添加随附的代码并执行它:

Javascript

var fs = require("fs");
const information =
    "\nGeeksForGeeks is a Computer Science entrance.";
 
// Asynchronously attaching information to document
fs.appendFile('sample.txt', information, 'utf8',
 
    // Callback work
    function (err) { 
   
          // In event that(fail) toss blunder
        // In the event that no mistake
        console.log("Data is added to document effectively.")
    });
    fs.readFile('sample.txt', work(fail, information) {
        if(fail) {
            return console.error(err);
        } 
    console.log(
        "Data in the record in the wake of affixing: \n" +
        data.toString()
    );
});   

输出: