我正在使用过滤器功能后将读取元素的文本的函数。我已经打印出返回的文本,它获取的元素,但我不认为我理解js承诺.. activeFilters是我已经确定的变种。承诺和for循环 - 试图验证多个元素文本
this.verifyColorFilterFunctional = function(color) {
var bool = true;
activeFilters.count().then(function (count) {
var amt = count - 1;
for (var i = 0; i < amt; i++){
activeFilters.get(i).getText().then(function(text) {
bool = (color === text);
console.log(bool);
});
if (!bool) {
break;
}
}
});
return expect(bool).to.become(true);
};
console.log根据需要输出true和false,但有两件事我已经注意到了。如果是假的,它不会像我在if语句中告诉它的那样突破。此外,我得到一个typeError:真不是一个可接受的错误..我相信逻辑听起来不错,在我的头,但没有JS。任何帮助将不胜感激。
2个问题在这里,首先你不能在一个异步方法上使用标准for循环,其次你!bool在你承诺甚至完成之前得到执行。 – Keith
我的javascript非常弱...我试图初始化promise中的变量,然后使用for循环但变量没有初始化 – Tree55Topz
@Nico,可以有多个元素进行验证。过滤器更新了我需要确保所有这些结果,但是很多显示器(比如9或更多)都有我想要的过滤器。 – Tree55Topz