Javascript 在量角器中返回函数值时未定义

Javascript 在量角器中返回函数值时未定义,javascript,testing,protractor,end-to-end,Javascript,Testing,Protractor,End To End,我有一个返回值的函数: 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++;

我有一个返回值的函数:

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
之前在日志中显示该值


有什么建议吗?

您得到的是未定义的
,因为这是返回的内容(不返回任何内容):

让我们采用不同的方法,使用:

返回selectElement.all(按.tagName('option')).map(函数(选项,索引){
返回{
“文本”:option.getText(),
“索引”:索引
};
}).然后(功能(选项){
对于(变量i=0;i

我仍然不确定问题的动机方面,为什么您需要选择中某个选项的索引。无论如何,这是你可以考虑在处理<代码>选择> >选项< /代码>结构:< /P>时处理的问题。
ElementArrayFinder.prototype.each = function(fn) {
  return this.map(fn).then(function() {
    return null;
  });
};
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;
        }
    }
});