2015-08-30 68 views
0

我一直在寫一個模塊來容納一個對象數組,當它提供了一個特定的值時,它應該返回其中的一個。這是通過原型方法完成的,可以從其他需要它的模塊中調用。從模塊的原型方法返回值,同步還是異步?

我遇到的問題是,雖然這似乎是一個同步的方法調用,返回的對象始終不是一個我期待......

爲了得到我想要做的事:

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; 

當我從另一個模塊調用此方法時,即使它找到了所需的對象,它總是會返回false

所以我的問題是:是從另一個模塊NodeJS同步的原型方法?在我看來,像它應該...

回答

1

好了,在寫這個問題,它發生在我在我的錯誤在於:

基本上,回答這個問題的原型方法是同步的 - >是的,這是。

問題是,在這種方法中,我試圖從一個匿名函數(Array.forEach(function(){})return,這當然因爲你無法停止forEach()而不做任何事情,即使你可以,只會返回到原型的原型方法(在這種情況下,每次都會轉到下一行,並且只是return false)。

因此,爲了使這項工作,我只需要做到以下幾點:

ModuleOne.prototype.method = function(value){ 
    var found = false; 

    this.values.forEach(function(tempVal){ 
    if(tempVal.member === value){ 
     found = tempVal; 
    } 
    }); 
    return found; 
} 

所以現在應該正確地返回所需的對象(或假,如果未找到)。

希望這是清理的事情!