从模块的原型方法返回一个值,同步的还是异步的?
Returning a value from a prototype method of a module, synchronous or asynchronous?
我一直在编写一个模块来保存一组对象,当提供特定值时,它应该 return 其中一个。这是通过原型方法完成的,可以从需要它的其他模块调用。
我遇到的问题是,虽然这看起来像是同步方法调用,但 returned 对象始终不是我期望的对象...
为了得到我想要做的事情:
var ModuleOne = function(){
this.values = [];
}
ModuleOne.prototype.method = function(value){
this.values.forEach(function(tempVal){
if(tempVal.member === value){
return tempVal;
}
});
return false;
}
module.exports = Module;
当我从另一个模块调用此方法时,它总是 returns false
,即使它找到了所需的对象。
所以我的问题是:来自另一个模块的原型方法在 NodeJS
中是同步的吗?在我看来应该...
好的,在写这个问题时我突然想到我的错误所在:
基本上,回答原型方法是否同步的问题 -> 是的。
问题是,在这个方法中,我试图从一个匿名函数 (Array.forEach(function(){})
) return
,这当然不会做任何事情,因为你不能停止 forEach (),即使可以,也只会 return 到 ongoin 原型方法(在这种情况下转到下一行,每次都简单地 return false
)。
因此,为了完成这项工作,我只需要执行以下操作:
ModuleOne.prototype.method = function(value){
var found = false;
this.values.forEach(function(tempVal){
if(tempVal.member === value){
found = tempVal;
}
});
return found;
}
所以现在它应该正确 return 所需的对象(如果找不到则为 false)。
希望事情已经解决了!
我一直在编写一个模块来保存一组对象,当提供特定值时,它应该 return 其中一个。这是通过原型方法完成的,可以从需要它的其他模块调用。
我遇到的问题是,虽然这看起来像是同步方法调用,但 returned 对象始终不是我期望的对象...
为了得到我想要做的事情:
var ModuleOne = function(){
this.values = [];
}
ModuleOne.prototype.method = function(value){
this.values.forEach(function(tempVal){
if(tempVal.member === value){
return tempVal;
}
});
return false;
}
module.exports = Module;
当我从另一个模块调用此方法时,它总是 returns false
,即使它找到了所需的对象。
所以我的问题是:来自另一个模块的原型方法在 NodeJS
中是同步的吗?在我看来应该...
好的,在写这个问题时我突然想到我的错误所在:
基本上,回答原型方法是否同步的问题 -> 是的。
问题是,在这个方法中,我试图从一个匿名函数 (Array.forEach(function(){})
) return
,这当然不会做任何事情,因为你不能停止 forEach (),即使可以,也只会 return 到 ongoin 原型方法(在这种情况下转到下一行,每次都简单地 return false
)。
因此,为了完成这项工作,我只需要执行以下操作:
ModuleOne.prototype.method = function(value){
var found = false;
this.values.forEach(function(tempVal){
if(tempVal.member === value){
found = tempVal;
}
});
return found;
}
所以现在它应该正确 return 所需的对象(如果找不到则为 false)。
希望事情已经解决了!