📜  Node.js 中的链接是什么?

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

Node.js 中的链接是什么?

Node.js 中的链接可以使用 async npm 模块来实现。为了安装异步模块,我们需要在我们的目录中运行以下脚本:

npm init
npm i async

async 模块提供了两种最常用的链接函数的方法:

  • 并行(任务,回调):任务是通过 I/O 切换在实践中并行运行的函数集合。如果收集任务中的任何函数返回错误,则触发回调函数。一旦所有函数完成,数据就会以数组的形式传递给回调函数。回调函数是可选的。
  • series(tasks, callback) : tasks 中的每个函数只有在前一个函数完成后才会运行。如果任何函数抛出错误,则不会执行后续函数,并使用错误值触发回调。任务完成后,数据作为数组传递给回调函数。

示例 1:并行链接
文件名:index.js

const async = require('async');
  
async.parallel([
    (callback) => {
        setTimeout(() => {
            console.log('This is the first function');
            callback(null, 1);
        }, 500);
    },
    (callback) => {
        console.log('This is the second function');
        callback(null, 2);
    }
], (err, results) => {
    if (err) console.error(err);
    console.log(results);
});

使用以下命令运行index.js文件:

node index.js

输出:

This is the second function
This is the first function
[ 1, 2 ]

解释:注意到这两个函数是异步执行的。因此,由于 setTimeout() 方法,在第一个函数完成执行之前接收到第二个函数的输出。但是,只有在两个函数都完成执行后,数据才会传递给回调。

示例 2:系列链接
文件名:index.js

const async = require('async');
  
async.series([
    (callback) => {
        setTimeout(() => {
            console.log('This is the first function');
            callback(null, 1);
        }, 500);
    },
    (callback) => {
        console.log('This is the second function');
        callback(null, 2);
    }
], (err, results) => {
    if (err) console.error(err);
    console.log(results);
});

使用以下命令运行index.js文件:

node index.js

输出:

This is the first function
This is the second function
[ 1, 2 ]

解释:与并行执行不同,在这种情况下,第二个函数直到第一个函数完成自己的执行后才执行。与并行方法类似,只有在任务集合中的所有函数执行完毕后,才会将结果传递给回调函数。