我有以下功能:
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。函数的第一个控制台输出在那之后,但没有。这对我来说毫无意义。
答案 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){