node.js async series function's arguments

前端 未结 4 1982
夕颜
夕颜 2021-02-20 06:49

I need to do the code like following:

function taskFirst(k, v) {
    console.log(k, v);
}

function taskSecond(k, v) {
    console.log(k, v);
}

function run() {         


        
相关标签:
4条回答
  • 2021-02-20 07:01

    You could do something like this:

    function taskFirst(k, v, callback) {
        console.log(k, v);
    
        // Do some async operation
        if (error) {
            callback(error);
        } else {
            callback(null, result);
        }
    }
    
    function taskSecond(k, v, callback) {
        console.log(k, v);
    
        // Do some async operation
        if (error) {
            callback(error);
        } else {
            callback(null, result);
        }
    }
    
    function run() {
        var g1 = "Something";
        var g2 = "Something";
        var g3 = "Something";
        var g4 = "Something";
    
            async.series(
                [
                    // Here we need to call next so that async can execute the next function.
                    // if an error (first parameter is not null) is passed to next, it will directly go to the final callback
                    function (next) {
                        taskFirst(g1, g2, next);
                    },
                    // runs this only if taskFirst finished without an error
                    function (next) {
                        taskSecond(g3, g4, next);    
                    }
                ],
                function(error, result){
    
                }
            );
    }
    
    0 讨论(0)
  • 2021-02-20 07:10

    It can be as follows

    function taskFirst(k, v) {
        console.log(k, v);
    }
    
    function taskSecond(k, v) {
        console.log(k, v);
    }
    
    async.series([
        function(callback) { 
            callback(null, taskFirst(g1, g2));
        },
        function(callback) { 
            callback(null, taskFirst(g3, g4));
        }
    ],function(error, result){
    
    });
    
    0 讨论(0)
  • 2021-02-20 07:10

    This answer to async's github issue has worked for me perfectly. https://github.com/caolan/async/issues/241#issuecomment-14013467

    for you it would be something like:

    var taskFirst = function (k, v) {
       return function(callback){
          console.log(k, v);
          callback();
       }
    };
    
    0 讨论(0)
  • 2021-02-20 07:18

    Better way.

    const a1 = (a, callback) => {
        console.log(a, 'a1')
        callback()
    }
    const a2 = (a, callback) => {
        console.log(a, 'a2')
        callback()
    }
    
    const run = () => {
        async.series([
            a1.bind(null, 'asd'),
            a2.bind(null, 'asd2')
        ], () => {
            console.log('finish')
        })
    }
    run()
    
    0 讨论(0)
提交回复
热议问题