javascript: асинхронный sleep/delay без вложенного setTimeout
что-то перерыл пол интернета и не могу найти удовлетворяющее решение:
у меня есть задача:
while (data) {
data = action();
delay(1000); // синхронная секундная задержка
}
как бы сделать корректную функцию delay?
причем так, чтобы работала даже в редакторе JS на данном сайте - использование Promise вызывает ошибку, что надо в корне документа запускать
делать через while и постоянное зачитывание времени тоже вроде как не очень хороший способ - поскольку программа постоянно грузит процессор ненужными вызовами
подскажите, как лучше решить проблему
Ответы (1 шт):
Автор решения: Zhihar
→ Ссылка
немного разобрался в вопросе - большей части запутался ранее :)
получился такой код, который более-менее устраивает
async function process() {
for (i = 0; i < 10; i ++) {
console.log(i);
await new Promise((resolve, reject) => setTimeout(resolve, 3000));
}
}
process();
console.log('test');