Как дождаться завершения синхронной функции с таймаутами?
Есть функция
let FFF = async (A1, A2, A3, A4, A5) => {
const intId_1 = setInterval(() => {
/* код */
if (0 === 0) {clearInterval(intId_1);
const intId_2 = setInterval(() => {
/* код */
if (0 === 0) {clearInterval(intId_2);
const intId_3 = setInterval(() => {
/* код */
if (0 === 0) {clearInterval(intId_3);
/* здесь функция заканчивается */
};
}, 50);
};
}, 50);
};
}, 50);
};
Мне надо дождаться завершения функции, но я не понимаю куда тут вставить Promise/await. Мне надо запустить эту функцию первый раз с одними аргументами, дождаться когда она завершится, а потом запустить второй раз, с другими аргументами. Подскажите кто знает, но только на JS, на jQuery не надо)
Ответы (1 шт):
Автор решения: Solt
→ Ссылка
Нужно чтобы функция возвращала promise. А внутри промиса когда понадобится - вызвать функции resolve или reject.
Если таймеры одноразовые, чтобы не выключать их каждый раз, можно использовать setTimeout вместо setInterval.
let FFF = async (A1, A2, A3, A4, A5) => {
return new Promise((resolve,reject)=>{
const intId_1 = setInterval(() => {
/* код */
if (0 === 0) {clearInterval(intId_1);
const intId_2 = setInterval(() => {
/* код */
if (0 === 0) {clearInterval(intId_2);
const intId_3 = setInterval(() => {
/* код */
if (0 === 0) {clearInterval(intId_3);
console.log('done')
resolve('Ready')
};
}, 50);
};
}, 50);
};
}, 50);
})
};
FFF().then((pr)=>{
console.log(pr)
})