我正在使用過濾器功能後將讀取元素的文本的函數。我已經打印出返回的文本,它獲取的元素,但我不認爲我理解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