Sent: Thursday, June 18, 2015 4:50 PM

研究一下进入MY OPPORTUNITY的时候,BUSY INDICATOR为什么消失的很晚(似乎是LIST和DETAIL都好了后才消失)

概括地说,Ross描述的busy dialog在LIST和DETAIL的数据都回来了才消失的,这个behavior是working as designed的。具体看下面的代码。

为了更深入理解busy dialog,可以看附件两个视频。

我在Opp header ETAG的后台实现里加了一个10s的延时。

n 第一个video timeout_1500.wmv: 虽然list和detail的数据都ready了,但是因为ETAG需要10s才能返回,整个UI被这个ETAG的request造成的busy dialog锁住了,直到10s后UI才能点击
n 第二个video是把默认的timeout从1500毫秒改成30秒,即busy dialog不会显示。从video里看出UI始终是可操作的,尽管后台的ETAG还没有回来。
这个busy dialog实际上也是一种保护措施。如果UI上某些操作必须依赖于最新的ETAG,采用这种方式可以让user同步的ETAG请求返回UI之前就能够进行操作,会造成state的inconsistency。

Key message we could find in the source code:

  1. after sap.ca.ui.utils.busydialog.requireBusyDialog() is called in application, we can only see the rotating wheel in UI after 1.5 seconds - defined in BUSYDIALOG_TIMEOUT.
  2. the requireBusyDialog and releaseBusyDialog must be called in pair. There is private variable _iRequiredCount maintained inside the implementation. When require function is called, _iRequiredCount++; release for _iRequiredCount–.
  3. it is obsolete. New application should use sap.m.BusyDialog instead.

Take the process to open Opportunity tile as example.

  1. The bindAggregation in S2.controller.js will trigger the Odata request sent to backend:

request url:

And connectionManager is responsible to call requireBusyDialog:

iRequiredCount changed from 0 to 1:

  1. OpportunityAttachment data is requested. ConnectionManager calls another requireBusyDialog, iRequiredCount changed from 1 tp 2:

  1. in detail view, ETAG refresh operations makes iRequiredCount changed from 2 to 3:

  1. At this time, the response of request in step1 has been returned to frontend, ConnectionManager calls releaseBusyDialog:

iRequiredCount changes from 3 to 2:

Since now iRequiredCount still > 0, the busyDialog will not be closed.

  1. the response for request in step2 is returnd, iRequiredCount changes from 2 to 1:

  1. the ETAG request sent in step3 has response now, iRequiredCount changes from 1 to 0:

now busy dialog is closed:

Require Busy dialog相关推荐

  1. SAP UI5 Require Busy dialog

    Sent: Thursday, June 18, 2015 4:50 PM 研究一下进入MY OPPORTUNITY的时候,BUSY INDICATOR为什么消失的很晚(似乎是LIST和DETAIL都 ...

  2. SAP CRM Fiori busy dialog的工作原理

    为了更深入理解busy dialog,可以看附件两个视频. 我在Opp header ETAG的后台实现里加了一个10s的延时. 第一个video timeout_1500.wmv: 虽然list和d ...

  3. 使用 Busy Dialog 动画阻止 SAP UI5 应用按钮短时间内快速被点击试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 作者简介 Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今.Jerry 是 SAP 社区导师,S ...

  4. when busy dialog closed iDuration renderFioriFlower jQuery Animation closeL

    Created by Wang, Jerry, last modified on Jun 29, 2015 要获取更多Jerry的原创文章,请关注公众号"汪子熙":

  5. SAP UI5 busy Dialog debug - 单步调试

    Created by Wang, Jerry, last modified on Jul 04, 2015 要获取更多Jerry的原创文章,请关注公众号"汪子熙":

  6. SAP UI5 busy Dialog debug

    # Created by Wang, Jerry, last modified on Jul 04, 2015 要获取更多Jerry的原创文章,请关注公众号"汪子熙":

  7. SAP UI5 busy dialog released more often than required

    # Created by Wang, Jerry, last modified on Feb 03, 2015 要获取更多Jerry的原创文章,请关注公众号"汪子熙":

  8. Busy Dialog init - hashchange will call BusyDialog.open - flower

    Created by Wang, Jerry, last modified on Jun 29, 2015 要获取更多Jerry的原创文章,请关注公众号"汪子熙":

  9. SAP UI5 busy dialog - SVG

    Created by Wang, Jerry, last modified on Jun 29, 2015 要获取更多Jerry的原创文章,请关注公众号"汪子熙":

最新文章

  1. 头条面试归来,有些话想和Java程序员说!
  2. Android app被系统kill的场景
  3. 迭代器: isinstance
  4. 企业级业务系统开发实战-序言
  5. Hadoop搭建集群中输入hdfs namenode -format格式化节点时,提示:hdfs: command not found 解决办法
  6. iOS内存泄漏的常见情况
  7. 微信公众号开发--微信JS-SDK扫一扫功能
  8. Java中 volatile 关键字的最全总结,赶快给自己查缺补漏吧!
  9. [项目回顾]基于Annotation与SpringAOP的缓存简单解决方案
  10. Ubuntu 安装 Java EE
  11. 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第3节 maven标准目录结构和常用命令_07maven常用命令...
  12. java 创建消息队列_java - 在Java中动态创建异步消息队列 - 堆栈内存溢出
  13. 大功率UWB模块 XZM3000 移植手册 《从DWM1000到XZM3000移植手册》
  14. 超燃!高效 MacBook 工作环境配置,超实用
  15. Nacos 国内镜像
  16. 深入理解BootStrap-- 面板(panel)
  17. 上传文件到到大数据平台
  18. Markdown表格中换行、合并单元格
  19. 短信验证码常见漏洞总结
  20. 优秀免费资源300+

热门文章

  1. 使用C#实现网络时间同步功能
  2. linux as3.0 sendmail SMTP 验证 成功总结
  3. vue 设置代理报错;occurred while trying to proxy request xxx
  4. maven+jenkins+sonar集成搭建
  5. activity中指定一页面动态设置软键盘弹出属性
  6. mysql数据存储7天_MySQL开启binlog并且保存7天有效数据
  7. 通俗易懂,买一次西瓜就懂 Python
  8. SAP UI5 Currency 数据类型的校验逻辑分析
  9. 如何给 Chrome 开发者工具设置 Material Design 风格的主题外观
  10. SAP Commerce Cloud Spartacus UI 的购物车 Cart 功能