【发布时间】: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