【问题标题】:NodeJS object method keeps returning nullNodeJS对象方法不断返回null
【发布时间】:2015-02-15 05:36:26
【问题描述】:

假设我有这个对象:

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;
    });
};

我在async.parallel 中调用getBoundaries,我的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
});

【问题讨论】:

  • uhm....myObject是怎么变成数组的? var myObject = new MyObject('foo') 会给你一个 MyObject 的实例,它有属性,它不是一个数组。
  • index 在那里做什么?
  • 请展示你是如何创建myObject的。
  • 我的对象!=我的对象。 myObject 是全局定义的,如上所述,'var myObject = []'。

标签: node.js asynchronous


【解决方案1】:

以下作品;

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

但我不确定当这不是异步操作时是否需要回调。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-11
  • 2021-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多