Привет,
у меня есть фрагмент функции, который перекладывает элементы из двух массивов в два других массива на основе того, присутствуют ли эти элементы (controlsOnAC) в данный момент на странице. Ниже потом с массивом именно отсутствующих элементов дальнейшие действия производятся (если надо, я могу объяснить, почему так, но это долго и запутанно).
//действия по получению массивов allСontrolsToEnable и allControlsToCheck //до этого места все работает правильно - массивы содержат нужные элементы let elementsToEnable = []; let elementsToWait = []; for (let counter = 0; counter < allControlsToCheck.length; counter++){ controlsOnAC[counter].isPresent().then(function (result) { if (!result) { elementsToEnable.push(allСontrolsToEnable[counter]); elementsToWait.push(allControlsToCheck[counter]); console.log("element in elementsToEnable " + counter + " " + elementsToEnable[counter].locator().toString()); console.log("element in elementsToWait " + counter + " " + elementsToWait[counter].locator().toString()); } }); } //some actions console.log("HERE SHOULD BE FULL ARRAY LENGTH = " + elementsToEnable.length); console.log("HERE SHOULD BE FULL ARRAY LENGTH = " + elementsToWait.length)
После этой функции там происходят примерно такие действия: нажать на UI кнопочку, в открывшейся панельке прокликать элементы из массива elementsToEnable, дождавшись появления на UI элементов из elementsToWait, закрыть панельку.
И вот в эти дальнейшие действия массивы elementsToEnable и elementsToWait передаются пустыми, а сообщеньки про длину (которые капслоком) в консоли отображаются перед теми, что внутри цикла (но они потом выводят верное содержимое новых массивов), т.е. получается как-то так, что сперва проделываются все остальные действия, а уж потом программа идет в этот цикл (или в этот промис).
Подскажите, пожалуйста, как написать правильно, у меня видимо какой-то пробел насчет промисов здесь :(