Я выполняю несколько процессов, требующих времени, поэтому я хочу показать маску, я использую LoadMask. Проблема в том, что код, который я хочу запустить, кажется слишком быстрым, и я предполагаю, что он блокирует пользовательский интерфейс, чтобы показать маску. Процесс занимает около 4 секунд, поэтому я знаю, что маска не включается и не отключается одновременно.Необходимость использования DelayedTask иначе LoadMask не показывает
способ, которым я обходился, заключался в том, чтобы использовать отложенную задачу, но это похоже на запах кода.
Кто-нибудь еще делает это по-другому?
Вот что у меня есть
var myMask = new Ext.LoadMask(win, {});
myMask.show();
var task = new Ext.util.DelayedTask(function() {
....... // DO MY stuff and eventually do a myMask.hide()
task.delay(400);
Он отлично работает, но мне было интересно, если это правильный путь?
Если я удаляю задержанные данные, тогда маску никогда не отображает, но процесс действительно работает.
Заранее спасибо
Можете вы добавить код для своей задачи, включая myMask.hide()? – forgivenson
Ваша задача в 4 секунды? Вызов метода REST? – Mattex83
Я бы использовал общий обратный вызов для этих процессов, а глобальный счетчик равняется количеству процессов. В обратном вызове уменьшите этот счетчик. Как только счетчик 0, скройте маску. В ExtJs 6 есть обещания для этих целей, но, как я вижу, это не ваш случай. – yorlin