SetTimeout внутри генератора JS?

Почему мы не можем просто вызвать setTimeout внутри генератора ? Или проблема в for of ??
function* gen() {
	for (let key = 0; key < 5; key++) {
		setTimeout(() => yield (key), 1000);
	}
}

let generator = gen();

for (const key of generator) {
	console.log(key)
}


SyntaxError: yield is a reserved identifier
Почему пишет, что yield зарезервирован ??????
  • Вопрос задан
  • 417 просмотров
Решения вопроса 2
Robur
@Robur
Знаю больше чем это необходимо
потому что у вас yield совсем в другой функции - которая не генератор, а обычная стрелочная
Ответ написан
Комментировать
Seasle
@Seasle Куратор тега JavaScript
Если необходима задержка в цикле, почему бы не сделать так?
(async () => {
	const sleep = duration => new Promise(resolve => setTimeout(resolve, duration));

	for (let index = 0; index < 5; index++) {
		console.log(`[${new Date().toLocaleTimeString()}] Index: ${index}`);

		await sleep(1000);
	}
})();
/*
[12:18:12] Index: 0
[12:18:13] Index: 1
[12:18:14] Index: 2
[12:18:15] Index: 3
[12:18:16] Index: 4
*/
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы