2015-06-06 71 views
0

只是想了解忙碌指标的使用它交替超时/把等待等BusyIndi​​cator的最佳用途是什么?

例如具有的代码下面一行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

busyIndi​​cator的showhide函数仅控制何时显示指示符以及何时隐藏指示符。它们对代码中的其他任何事情都没有影响。

换句话说,你的代码基本上是:

  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

所以它意味着BusyIndi​​cator只是为了显示/隐藏指标,现在处理异步func调用我必须添加计时器?或者是否有任何WL API可以使用,我主要是通过用于在windows环境中提交页面的xmlhttprequest来解决这个问题。 – MichealSmith

+0

再次查看我的答案。 –

0

在我看来,使用繁忙指标的唯一主要用例是长时间运行同步妨碍用户界面的任务。假设长度超过2秒。希望这些很少。

如果您有任何异步任务,则用户界面不会被阻止,并且用户可以进行交互。如果您依据上述暗示的后续步骤的结果,那么您必须有回调/承诺才能触发下一步。如果您希望用户在异步任务完成之前被阻止,请将其视为同步任务并显示忙碌。

请注意,Busy Indicator的使用目前主要被视为反模式。它基本上喊你的用户“看看这个应用程序有多慢!”。有时候,你无法避免在你的应用程序中产生死亡时间,比如获取大块数据来生成视图,但有很多方法可以缓解这种情况。一个例子可能是 - 尽可能快地在视图上获取某些内容(< 1秒),然后用较大的数据回填。只要总是问问自己为什么你需要这个忙,我可以找出一种方法来避免它,但不要让用户想知道该应用正在做什么。