Немного новичок в javascript, но из того, что я прочитал, все ценности в рамках обещания в основном используются только в рамках этого обещания?Как выйти из цикла из возвращаемого значения обещания?
В принципе getSomething() возвращает true/false из другого обещания. И я должен был выйти из цикла for, если это правда. Я пытался что-то вроде этого, но я уверен, что это не так, как это не распечатав «ломать»
for(...) {
var bool = this.getSomething(a,b,c).then((flag) => {
if (flag == true) {
console.log('returning true');
return true; // can't use break so have to set boolean - eslint gives me unsyntactical break
}
});
if (bool == true) {
console.log('breaking');
break;
}
}
getSomething(a,b,c) {
const n = b[a].element(by.binding('something'));
return n.getText().then((text) => {
if (text === c) {
return clickSomething(); // returns true after click()
}
});
}
Причиной, побуждающей я использую для цикла, потому что мне нужно найти текст, соответствующий в сильной , затем нажмите кнопку в теге td ниже.
<tbody>
<tr ng-repeat="something">
<td>
<strong>{{x.name}}</strong>
</td>
<td>
<button>{{x.button}}</button>
</td>
</tr>
</tbody>
Вы не можете использовать обещание с циклом. Обещания являются асинхронными, то есть они будут запускаться только после запуска всего вашего другого синхронного кода. –
@MikeC почему после? Они будут работать в одно и то же время. – Calin
@Calin Я имею в виду, что функция '.then' не будет выполняться до тех пор, пока не завершится весь синхронный код. Такая же идея, как использование 'setTimeout' или' setInterval'. –