JavaScript async.waterfall 和 async.series 之间的区别是什么

JavaScript async.waterfall 和 async.series 之间的区别是什么

async.waterfall: 此waterfall方法逐个运行所有的函数(即任务),并将第一个函数的结果传递给第二个函数,将第二个函数的结果传递给第三个函数,依此类推。当一个函数将错误传递给自己的回调函数时,后续的函数将不会被执行。所以,主要的回调函数会立即带有错误被调用。

语法:

waterfall(tasks,callback)
  • tasks: 它指的是异步函数数组。每个函数运行并将结果作为参数发送给下一个函数。
  • callback: 当所有函数都完成时,回调函数会运行。它将具有来自最后一个任务回调的结果作为参数。回调函数是可选的。它被调用时带有(err,[results])。

注意: 为了使用async.waterfall函数,我们需要先导入它。

import waterfall from 'async/waterfall';

示例:

async.waterfall([
    function(callback) {
        callback(null, 'gfg', 'one');
    },
    function(arg1, arg2, callback) {
        // The arg1 now equals 'gfg' 
        // and arg2 now equals 'one'
        callback(null, 'two');
    },
    function(arg1, callback) {
        // The arg1 now equals 'two'
        callback(null, 'complete');
    }
], function (err, result) {
    // Result now equals 'complete'
});

输出: async.waterfall()只会将最后一个调用的函数的结果传递给主回调函数。

complete

async.series: async.series方法按照顺序运行任务集合中的函数。每个函数在上一个函数完成后运行一次。如果任何一个函数在系列中将错误传递给其回调函数,那么不会再执行其他函数。然后,回调立即被调用并传递错误的值。否则,当任务完成时,回调会收到一个包含所有任务结果的数组。

语法:

series(tasks,callback)
  • tasks: 它是一系列任务或函数的集合。
  • callback: 它是一个可选参数,在任何函数发生错误时被调用,否则,它获取所有任务的结果数组。

注意: 要使用async.series函数,我们首先需要引入它。

import series from 'async/series';

示例:

async.series([
    function(callback) {
        // do something...
        callback(null, 'one');
    },
    function(callback) {
        // do something...
        callback(null, 'two');
    }
],
// callback(optional)
function(err, results) {
    /* Results is now equal to 
       ['one', 'two'] and this is
       returned from all the tasks
       executed above.*/
});

输出: 一旦系列结束, async.series() 将把所有任务的结果传递给主回调函数。

async.waterfall和async.series的主要区别是:

  • async.waterfall允许每个函数将其结果传递给下一个函数,而async.series将所有任务的结果传递给最终回调函数。
  • async.waterfall()只会将最后一个函数的结果传递给主回调函数。然而,async.series将把所有任务的结果传递给主回调函数。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程