NodeJS对象方法保持返回null

时间:2014-12-16 19:40:13

标签: node.js asynchronous

让我说我有这个对象:

function MyObject(initval) {
     this.myVal = initval;
}

MyObject.prototype.boundaries = function(howmuch, callback) {
    var arr = [];
    arr.push(this.myVal-howmuch);
    arr.push(this.myVal+howmuch);
    callback(arr);
};

MyObject.prototype.getBoundaries = function(howmuch) {
    this.boundaries(howmuch, function(arr) {
        console.log(arr); //returns null
        return arr;
    });
};

我在getBoundaries内调用async.parallel,我的MyObject数组是全局定义的。

arr = myObject[index].getBoundaries(5); //null here too

为什么我一直无效?

修改

向那些请求我如何创建myObject的人

var myObject = [];
myObject.push(new MyObject(1));
myObject.push(new MyObject(2));

编辑异步部分

var arr;
var asycnTasks = [];

(function(arr) {
    for(i = 0; i < myObject.length; i++) {
        (function(i) {
             asyncTasks.push(function(callback) {
                 arr.push(myObject[i].getBoundaries(5));   
                 callback();    
             });
        })(i);
    }
})(arr);

async.parallel(asyncTasks, function() {
    //should have arr != null but is null
});

1 个答案:

答案 0 :(得分:1)

以下作品;

MyObject.prototype.getBoundaries = function(howmuch) {
    var result = null;
    this.boundaries(howmuch, function(arr) {
        result = arr;
    });
    return result;
};

但是,如果不是异步操作,我不确定是否需要回调。