2015-05-06 18 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结构: