如何在没有全局变量的Async.series函数之间传递值

时间:2017-10-23 02:04:38

标签: node.js async.js

var Async = require('async');

var Test_Hander = function () {
};

Test_Hander.prototype.begin = function () {
    Async.series([
        this.first, // this.first.bind(this) does not work either
        this.second
    ],function (error) {
        if (error) {
            // shit
        }
        else {
            // good
        }
    });

};

Test_Hander.prototype.first = function (callback) {
    console.log('Enter first function');
    callback(null,'I am from first function');
};

Test_Hander.prototype.second = function (one, callback) {
    console.log('Enter second function');
    console.log('parameter one: ');
    console.log(one);
    console.log(callback);

    callback(null);
};

var hander = new Test_Hander();
hander.begin();

我想将函数中的一些值传递给函数second。而且我知道瀑布和全局变量都可以。但是,我可以在不使用瀑布和全局变量的情况下将结果值从函数优先传递到函数秒吗?

1 个答案:

答案 0 :(得分:0)

使用promise您可以链接方法并执行类似于async.series的代码,并且您不需要异步模块。

var Test_Hander = function () {
};

Test_Hander.prototype.begin = function () {
    this.first()
        .then(this.second)
        .catch(function(err){
            // Handle error
        });

};

Test_Hander.prototype.first = function (callback) {
    return new Promise(function(reject, resolve){
        // do something
        // if err : reject(err)
        // else : resolve(data);
    });
};

Test_Hander.prototype.second = function (responsefromFirst) {
    // Do somethign with response
};

var hander = new Test_Hander();
hander.begin();