Таймер машинописи с функцией обратного вызова - PullRequest
0 голосов
/ 05 февраля 2020

Я относительно новичок в машинописи.
Я пытаюсь создать таймер (или использовать готовый к использованию, если вы его знаете), который позволит мне выполнить операцию несколько раз (например: Выполнить операция пользовательского интерфейса, такая как fade на каждом элементе в массиве) каждый интервал и даст мне знак завершения, на котором я могу ждать. :

public myMethod(): void {
// Show the players in the quality group
let showTimer: Timer = new Timer(this.showElement);
showTimer.doTimer(allQaulityGroupPlayersCells, allQaulityGroupPlayersCells.length, 750);
}

Но мне нужно дождаться окончания всех итераций таймера ...
Есть идеи, как мне этого добиться?

1 Ответ

1 голос
/ 05 февраля 2020

Подождите, пока не выполнится обещание от showTimer.doTimer, например, используя await (в функции async) или его методы then / catch (в функции не async).

Ваша myMethod не является функцией async, поэтому:

showTimer.doTimer(/*...*/)
.then(() => {
    // It's done now
})
.catch(() => {
    // An error occurred
});

Ваше обещание doTimer никогда не будет отклонено, поэтому технически вы можете отказаться от catch обработчик. Но очень часто вы видите, как люди отказываются от этого, когда обещание может быть фактически отклонено, потому что я не решаюсь показать пример, который не следует правилу обещаний: вы должны вернуть цепочку обещаний или обработать отклонения. ; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...