@vgray

Как сделать задержку при запуске асинхронной функции?

Есть код, суть которого быстро запустить 10 функций одновременно, каждая из которых возвращает промисы и дальше уже спокойно ждать результатов.

async fn() {
	let rets = [];
	for (let i=0;i<10;i++) {
		try {
			let p = functionReturnsPromise(); 
			rets.push(p);
		} catch (err) {
			console.log(err)
		}
	}
	return rets;	
}

// ---- Ждем результатов, один за другим ---
let results = fn();
for (let i=0;i<10;i++) {
	let result = await results[i];
}


Теперь нужно сделать, чтобы также запускалось 10 функций, но чтобы у каждой функции можно было установить время через которое она начнет исполнятся (время задержки). Менять можно только код функции fn

Вроде понятно, что там должен быть таймер, а как это вместе сделать знаний не хватает. Пока пробую что-то вроде кода ниже, подскажите пожалуйста, как это все вместе скрестить. заранее спасибо.

async fn() {
    let rets = [];
    for (let i=0;i<10;i++) {
        let p = new Promise((resolve, reject) => {
            setTimeout(() => resolve(), i*1000)
        }).then(()=>{
            ....????....
        }).catch(error => {
            console.log(err)
        });
        rets.push(p);
    }
    return rets;    
}
  • Вопрос задан
  • 138 просмотров
Решения вопроса 1
wapster92
@wapster92 Куратор тега JavaScript
function later(delay) {
    return new Promise(function(resolve) {
        setTimeout(resolve, delay);
    });
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы