Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
 Аватар для bodynar
345 / 307 / 135
Регистрация: 14.03.2015
Сообщений: 1,158
Записей в блоге: 1

Отображение иконки загрузки во время вызова API

08.05.2022, 18:25. Показов 1132. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, форумчане

В приложении имеется ситуация, когда пользователь может вызвать загрузку неких данных с веб-сервера, это осуществляется через нативный fetch. На время загрузки необходимо заблокировать кнопки и другие элементы.
Дополнительно к этому также показывается спиннер загрузки.

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

Вопрос: Можно ли как-то иначе подойти к отображению спиннера?

Из вариантов у меня только:
- Добавить delay для вызова (условные 2 секунды, чтобы спиннер покрутился)
- Отказаться от идеи спинера и явно задавать доступность элементов (пусть они "мигают")
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.05.2022, 18:25
Ответы с готовыми решениями:

Отображение изображения во время его загрузки в Image
Приветствую! Недавно в wpf и заметил одно, мягко говоря, плохое свойство у Image - если загружать файлы из сети, они отображаются только...

Отображение интерфейса во время загрузки файла через sftp.get
День добрый! Python 3.4 PyQt5 PyCharm 2018.3 PyInstaller 3.4 Имеется программа updater, получающая файл с сервера по SFTP.

Нет изображения после загрузки биоса, во время загрузки системы
Видеокарта RX 550 2g Gddr5 от powercolor red dragon Мат. плата ASUS p5evm-do, есть подозрения на их несовместимость Новая, вставил в...

2
Эксперт JS
 Аватар для DrType
6553 / 3624 / 1075
Регистрация: 07.09.2019
Сообщений: 5,877
Записей в блоге: 1
08.05.2022, 21:57
Лучший ответ Сообщение было отмечено bodynar как решение

Решение

Чисто теоретически — мне тоже не приходит в голову много вариантов.
Наверное, самый естественный — ваш первый. Показать спиннер и зафиксировать момент отправки запроса. При получении ответа сравнить прошедшее время с заданным минимальным промежутком и, если минимум оказался больше, то ждать остаток времени, а лишь затем скрыть спиннер.
1
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3844 / 1703 / 431
Регистрация: 14.03.2022
Сообщений: 4,346
10.05.2022, 15:34
Цитата Сообщение от bodynar Посмотреть сообщение
Можно ли как-то иначе подойти к отображению спиннера?
Применяем следующий прием...
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<!--
<script src="https://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
-->
<style>
#spinner {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: #000;
    opacity: 0.2;
}
#spinner.on {
    display: block;
}
</style>
<script>
document.addEventListener('DOMContentLoaded', _ => {
    let dsc
    const spn = document.querySelector('#spinner')
    document.querySelector('button').addEventListener('click', _ => {
        dsc = setTimeout(_ => spn.classList.add('on'), 300)
        start()
            .then(_ => {
                // Некие действия
                if (dsc) clearTimeout(dsc)
                spn.classList.remove('on')
            })
    })
    // Эмуляция действий
    function start() {
        return new Promise((resolve, reject) => {
            setTimeout(_ => resolve(true), 2000)
        })
    }
})
</script>
</head>
<body>
<button>Test</button>
<div id='spinner'></div>
</body>
</html>
Т.о. "привидения" никто не увидит, если ответ быстрый.
Но это уже другой подход к этому вопросу. Т.е. спинер будет виден только при долгих ответах...
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.05.2022, 15:34
Помогаю со студенческими работами здесь

Окно загрузки до вызова основной формы
Добрый вечер всем. Мне нужно, чтобы до вызова формы ей предшествовала типа другая форма с логотипом и с загрузкой. После окончания...

Иконки загрузки и как их использовать
У меня есть форма добавления книги я хочу что бы после того как пользователь нажимает на кнопку добавить у него появляется иконка загрузки...

LG LW20-3577 во время загрузки выдает синий экран и сразу уходит в рестарт. Потом дает меню выбора загрузки
ноутбук LG. 12 дюймов монитор. Вин Хп сервис пак 3, постоянно выдавал проверку дисков. хотя выключались корректно каждый раз. Работает...

API функция вызова таймера
Здравствуйте! Столкнулся с некоторой сложностью, функция timeSetEvent не вызывает callback функцию по неизвестной мне причине. ...

Отображение иконки
Всем привет! имеется иконка в формате ico загрузил иконку, так ее видно а после запуска нет.. подскажите что сделать? Добавлено...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru