2015-05-06 40 views
3

返回一個函數值I具有返回值的函數:未定義而在量角器

checkValue = function(Name){ 
    var tempIndex=-1; 
    var nameIndex=0; 
    return selectElement.all(by.tagName('option')).each(function (element) { 
     return element.getText().then(function(text){ 
      tempIndex++; 
      if(text.toString().indexOf(Name)!=-1){ 
       nameIndex=tempIndex; 
       return nameIndex; 
      }else{ 
       return nameIndex; 
      }; 
     }); 
    }); 

這被稱爲在另一個函數:

checkValue(Name).then(function(value){ 
    logger.info("value ::"+value); 
}); 

當我調用上述函數的值是顯示爲未定義,並在調用checkValue之前顯示在日誌中。

有什麼建議嗎?

回答

0

你得到,因爲這undefined是什麼each()返回(返回任何內容),implementation

ElementArrayFinder.prototype.each = function(fn) { 
    return this.map(fn).then(function() { 
    return null; 
    }); 
}; 

讓我們的做法是不同的,使用map()

return selectElement.all(by.tagName('option')).map(function (option, index) { 
    return { 
     'text': option.getText(), 
     'index': index 
    }; 
}).then(function (options) { 
    for (var i = 0; i < options.length; i++) { 
     if (options[i].text === Name) 
     { 
      return options[i].index; 
     } 
    } 
}); 

我仍然不確定問題的動機,爲什麼你需要選擇一個選項的索引。無論如何,這是你可以考慮切換到在處理select->option結構: