量角器元件全部过滤器损坏

时间:2014-10-14 15:00:10

标签: javascript asynchronous promise protractor

我有以下功能:

var getUserInList = function(email){
console.log('getUserInList email:'+email);
element.all(by.repeater('user in users')).filter(function(el, index){
    console.log('index:'+index);
    return el.element(by.binding('user.email')).getText().then(function(text){
        console.log('text:'+text+' email:'+email);
        return text === email;
    });
  }).then(function(els){
    console.log('els length'+els.length+'els[0]'+els[0]);
    if(els.length === 0)return null;
    return els[0];
  });
};

在第一次调用时,它将以下输出提供给控制台:

.getUserInList email:test2@test.com
end create
index:0
index:1
index:2
text:test2@test.com email:test2@test.com
text:test@test.com email:test2@test.com
text:rory.gilfillan@gmail.com email:test2@test.com
els length1els[0][object Object]
index:0
index:1
index:2
text:test2@test.com email:test2@test.com
text:test@test.com email:test2@test.com
text:rory.gilfillan@gmail.com email:test2@test.com
index:0
index:1
index:2
text:test2@test.com email:test2@test.com
text:test@test.com email:test2@test.com
text:rory.gilfillan@gmail.com email:test2@test.com
.start delete
getUserInList email:test3@test.com

令人惊讶的是,虽然该函数应该在控制台中返回第9行中的值,但该函数仍继续运行。然后当再次调用该函数时,它只返回undefined,不返回promise。函数的第一个控制台输出在那之后,但没有。这对我来说毫无意义。

1 个答案:

答案 0 :(得分:3)

element.all(by.repeater('user in users')).filter(function(el, index){

应该是

return element.all(by.repeater('user in users')).filter(function(el, index){