2015-06-06 3 views
0

Просто хочу понять использование занятого индикатора делает его чередовать тайм-аут/ввод ждать и т.д.Что лучше всего использовать BusyIndicator?

, например, иметь следующую строку кода в mainfunct()

1. busy.show(); 
2. callcustom(); --asynch function without callback this is calling xmlhttpRequest etc. 
3. busy.hide(); 
4. callanothercustom(); -- asynch function without callback 

Теперь вопрос заключается в

  1. . Строка 4 будет выполнена только тогда, когда busy.hide() завершает работу и строка 3, только когда линия 2 завершена, а не занята все (2,4) wi буду называть внутри mainfunct() без линии 2 ожидая полной ...

  2. когда busy.hide() вызывается есть ли установка таймера, который приёмы до линии 2 отделки, а затем скрыть и линии вызовов 4.

ответ

0

Функции функции show ии hide функции контролируют только при отображении индикатора и при скрытии индикатора. Они не влияют на то, что когда-либо происходило в вашем коде.

Другими словами ваш код в основном:

  1. callcustom()
  2. callanothercustom()

В вашей customcode вы можете убедиться, что callanothercustom будет называться только тогда, когда она будет закончена добавив ваш собственный обратный вызов ... Я предполагаю, что это AJAX внутри него, поэтому: jQuery ajax success callback function definition

function callcustom() { 
    $.ajax({ 
     url : 'example.com', 
     type: 'GET', 
     success : callanothercustom 
    }) 
} 

А затем в callanothercustom вы можете busy.hide ...
Или любая другая комбинация бизнес-логики - это действительно зависит от того, что происходит в вашем коде.

+0

Значит, BusyIndicator просто показывает/скрывает индикатор, теперь для обработки асинхронного вызова func мне нужно добавить таймер? или есть ли какой-либо API WL, который я могу использовать, я в основном получаю эту проблему с xmlhttprequest, используемой для отправки страницы в enviorn. – MichealSmith

+0

См. Мой ответ еще раз. –

0

На мой взгляд, единственным основным прецедентом использования индикатора занятости является длительная работа синхронной задачи, которая блокирует пользовательский интерфейс. Скажем, более 2 секунд. Надеюсь, их немного далеко.

Если у вас есть задачи asynch, пользовательский интерфейс не блокируется, и пользователь может взаимодействовать. Если вы полагаетесь на результаты для следующих шагов, как вы подразумеваете выше, тогда у вас должен быть обратный вызов/обещание для запуска следующих шагов. Если вы хотите, чтобы пользователь был заблокирован до завершения асинхронной задачи, рассмотрите его как задачу синхронизации и покажите «Занят».

Помните, что использование индикатора занятости в основном рассматривается как анти-шаблон. Его в основном кричат ​​на пользователя «Посмотрите, как медленно это приложение!». Иногда вы не можете избежать мертвого времени в своем приложении, например, извлечение большого блока данных для создания представления, но есть много способов смягчить это. Примером может быть: - получить что-то на представлении как можно быстрее (< 1 сек), а затем засыпать большими данными. Просто всегда спрашивайте себя, ПОЧЕМУ вы нуждаетесь в этом занятом, и я могу найти способ избежать этого, но не оставлять пользователя недоумевающим, что делает приложение.

Смежные вопросы