让我说我有这个对象:
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
});
答案 0 :(得分:1)
以下作品;
MyObject.prototype.getBoundaries = function(howmuch) {
var result = null;
this.boundaries(howmuch, function(arr) {
result = arr;
});
return result;
};
但是,如果不是异步操作,我不确定是否需要回调。