BusyIndi​​cator的最佳用途是什么?

时间:2015-06-06 11:22:49

标签: ibm-mobilefirst

只是想了解忙指示符的用法是否替换超时/等待等等。

例如,

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. 只有在busy.hide()完成时才会执行第4行 只有当第2行完成而没有忙碌时才会进行第3行(2,4) 将在mainfunct()内调用,无需等待第2行 完整...

  2. 当调用busy.hide()时,是否有任何计时器设置     保持到第2行结束然后隐藏并调用第4行。

2 个答案:

答案 0 :(得分:0)

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

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

  1. callcustom()
  2. callanothercustom()
  3. 在你的customcode中,你仍然可以确保callanothercustom只有在完成时才会通过添加你自己的回调来调用...我认为这里面是AJAX,所以:{{3} }}

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

    然后在callanothercustom你可以busy.hide ...
    或任何其他业务逻辑组合 - 它实际上取决于代码中发生的事情。

答案 1 :(得分:0)

在我看来,使用忙碌指标的唯一主要用例是长时间运行同步任务阻止UI。比如说超过2秒钟。希望这些是很少的。

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

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