Таким образом, я думаю, что пользователь должен быть заблокирован от выполнения каких-либо действий в вашем приложении, только когда интервал ожидания очень короткий (2 секунды или меньше) и когнитивные издержки выполнения многопоточности могут привести к меньшему стабильное приложение. Подробнее см. Ниже.
Для операции, продолжающейся менее 0,1 секунды , вам обычно не нужно идти асинхронно или даже показывать песочные часы.
Для операции длительностью от 0,1 до 2 секунд вам обычно не нужно выполнять асинхронную операцию. Просто переключите курсор на песочные часы, а затем выполняйте работу на линии. Визуальной подсказки достаточно, чтобы конечный пользователь был доволен.
Если конечный пользователь инициирует операцию, которая займет всего пару секунд, он находится в «сфокусированном» режиме мышления, в котором он подсознательно ждет результатов своего действия, и он не переключил свою сознательный мозг из этого конкретного фокуса. Поэтому блокирование пользовательского интерфейса с визуальным индикатором того, что это произошло, вполне приемлемо в течение такого короткого периода времени.
Для операции, продолжающейся более 2 секунд , вы обычно должны работать асинхронно. Но даже тогда вы должны предоставить какой-то индикатор прогресса. Людям трудно сконцентрироваться в отсутствие стимуляции, и 2 секунды достаточно для того, чтобы конечный пользователь естественным образом перешел от сознательной «сфокусированной» деятельности к сознательной «ожидающей» деятельности.
Индикатор прогресса дает им возможность занять их, пока они находятся в этом режиме ожидания, а также дает возможность определить, когда они собираются вернуться в свой «сфокусированный» контекст. Визуальные подсказки дают мозгу нечто, вокруг чего можно структурировать переключение контекста, не требуя слишком много сознательных мыслей.
Там, где беспорядок, где у вас есть операция, которая обычно завершается за время X, но иногда занимает Y , где Y намного больше, чем X. Это может произойти для удаленных действий, таких как достижение через сеть. Вот тогда вам может понадобиться комбинация вышеуказанных действий. Например, рассмотрите возможность отображения таймера для яиц в течение первых 2 секунд, и только затем добавьте индикатор прогресса. Это позволяет избежать выведения конечного пользователя из «сфокусированного» контекста непосредственно в контекст «ожидания» без промежуточного шага.