Перебрать массив 
		
		
		
		Коллеги, доброго времени суток, в очередной раз затупил. Есть пример: 
	let fail = 10; let requestsArr =[0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0]; Смысл такой, выполняется функция, которая отправляет куда то запросы и получает ответы. Каждый элемент массива это ответ от сервера. 0 - это пустой ответ или ошибка, 1 - это ОК. Так вот мне нужно составить проверку, если у меня fail раз подряд пришел от сервера 0, то нужно закончить функцию. Прошу помощи))) Как составить эту проверку. Заранее благодарю  | 
	
		
 А не проще ли суммировать в переменной ошибочные ответы? 
	 | 
	
		
 laimas, да в том и дело, что этот костыль нужен для того, что бы закончить выполнение функции если сервер отрубается. И ничего лучше)))) кроме того что бы придумать такую логику на коленках не получилось(((( 
	Если я возьму просто сумму или же в принципе складирую fail в переменную или еще что-то, а потом сравню с чем нибудь, то по фэншую)))) это будет не корректно. Надо ловить именно ошибки подряд, Если есть другой способ или идея, буду благодарен за подсказку  | 
	
		
 Цитата: 
	
  | 
	
		
 
(async () => {
	var fails = 0;
	for(let i = 0, len = 50; i < len; i++) {
		const { answer } = await fetch("https://yesno.wtf/api").then(response => response.json(), () => ({}));
		const ok = answer === "yes";
		if(ok) {
			fails = 0;
		} else {
			fails++;
		}
		console.log(i, ok);
		if(fails === 5) break;
	}
})();
 | 
	
		
 laimas, вопрос как взять несколько элементов массива подряд и проверить их значение. Последнее это не нужно.  
	Пока ничего лучше не придумал((( делать через рекурсию, вот пример: 
t failRulle= 10;
let arr = [0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0];
let items = [];
if (arr.length > failRulle) {
	check(arr, result => {
		if (result) console.log('Обрываем');
	});
}
function check(array, callback) {
	if (!array.length) {
		callback();
	} else {
		let item = array.shift();
		if (item !== 1) {
			check(array, callback);
		} else {
			for (let i = 0; i < array.length; i++) {
		
				if (arr[i] === item) {
					items = arr.splice(i, failRulle);
				}
				let fail = checkFails(items);
				(fail) ? callback(true) : check(array, callback);
			}
		}
	}
}
function checkFails(array) {
	
	let fails = [];
	array.forEach(item => {
		if (item === 1) fails.push(item);
	});
	return (fails.length === failRulle) ? true : false;
}
но че то не очень помойму((  | 
	
		
 Malleys, я так тоже думал, но тут нет очередности, нужно именно очередность соблюдать еще 
	 | 
	
		
 Что-то я не понимаю. Если надо закончить выполнение функции на неудачные ответы, то какие ответы, те что были в прошлом или текущие? Если текущие, то даже при наличии массива при удачном ответе нужно инициализировать его заново, зачем хранить то, что проверять бессмысленно? А если так, то зачем вообще массив? 
	 | 
	
		
 Цитата: 
	
 Возможно вам стоит запустить тот пример несколько раз, поскольку от того API приходят случайные Да!/Нет! и могло не быть подряд 5 Нет! Когда возникает подряд 5 Нет! то запросы обрываются! UPD О да! Следующий запрос начинает только после завершения предыдущего!  | 
	
		
 коллеги, спасибо. Вопрос решен. Большое всем спасибо. Задача конечно специфичная, но тем не менее. 
	 | 
	
		
 
console.log('result', [0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0]
    .reduce((acc, curr) => {
      if (acc.count < 10) {
        if (acc.prev === curr) acc.count++
        else acc = {
          prev: curr,
          count: 1
        }
      }
      return acc
    }, {
        prev: null,
        count: 0,
      }
    ).count >= 10 ? 'fail' : 'success'
  )
rxjs 
import { interval } from 'rxjs';
import { scan, mergeMap, takeWhile } from 'rxjs/operators';
interval(1000).pipe(
  mergeMap(() => Promise.resolve(Math.round(Math.random() * 1))),
  scan((acc, curr) => curr === 1 ? ++acc : 0, 0),
  takeWhile(acc => {
    console.log(acc)
    return acc < 2
  })
).subscribe()
 | 
	
		
 Без массива: массив не имеет смысла. По текущим ответам. 
	i - общий счетчик запросов. 
function answer() {
   return Math.floor(Math.random() + 0.45);
};
var limit = 5,
      fail   = 0,
      i = 0;
while (fail < limit) {
      answer() > 0? fail = 0: fail = fail + 1;
      i = i + 1;  
}
alert(i);
 | 
| Часовой пояс GMT +3, время: 16:52. |