SAP 电商云 Spartacus UI 设置 Delivery Mode 的时序分析和一个竞争条件问题分享
(1) State.loading这个值存储在什么地方的?
(2) 什么时候变为 true?什么时候变为 false?
Component/service 需要消费存储在 store 中的数据,通过 Store 和 Selector 完成。
例子:
Component 需要改变 store 中的数据时,不能直接修改 store,通过 action 和 store:246 行
Action 触发 reducer,一个有限状态自动机。不能直接修改状态,只能根据当前状态,返回新的状态。
Loading:true
从 loading:false 跳转到 loading: true, 中间经过了哪些步骤?
只有 Cart stable 和 checkout 数据加载完成时,才能调用 HTTP PUT:
从上面的代码能看出:
Wait?
在 3G 网络下,我匀速点了8次:第一次点击的是 standard delivery
console.log 显示每一次点击都会触发一次 HTTP 请求,但不一定是即时触发,有排队现象。
所以,当我点了 radio input 之后,如果不满足 cart stable = true,checkout loading = false 的前提,HTTP PUT 就发不出去,loading 状态就没办法变为 true.
问题转而变为研究 cart stable 和 checkout loading 的变化规律。
成功设置 DeliveryMode 之后,就触发 Cart 加载:
Cart 加载完毕之后,就会通过代码第59行加载 checkout detail.
因此,delivery mode(HTTP PUT)和 cart,checkout loading,是三个串行的 HTTP 操作。
第一次点击发生在 t0,如果第二次点击发生在 t3 之后,则没有任何问题。
如果第二次点击发生在 t1~t3 之间(3G 网络),就会出现问题。
最终解决方案:
用 delivery mode,cart stable, checkout loading 三个因素同时控制。
更多Jerry的原创文章,尽在:“汪子熙”:
相关文章
- [SAA + SAP] 17. RDS - Aurora
- 90. 将 SAP ABAP 内表内容本地导出成 Excel 文件
- SAP UI5 应用里一些容器控件的介绍
- sap.ushell.Container.getService("URLParsing") click tile using Ke's user
- SAP WebClient UI和business switch相关的逻辑介绍
- SAP Webclient UI和Fiori UI的混搭
- 如何使用SAP事务码SAT进行UI应用的性能分析
- SAP CRM WebClient UI cross component跳转的一个具体例子
- SAP CRM WebClient UI的cancel按钮处理
- SAP 电商云 Spartacus UI 点了 Shipping Method 之后的执行逻辑
- SAP 电商云 Spartacus 产品明细页面的 pageContext 如何获取的?
- SAP Commerce Cloud Spartacus UI 的高阶 reducer 设计
- 对 SAP Spartacus 进行服务器端构建时,编译的资源列表
- SAP Spartacus如何禁止某些标准的css样式
- SAP 电商云 Spartacus UI Event Service 实现明细介绍
- Mobile first 设计思路在 SAP 电商云 Spartacus UI 中的设计体现一例
- SAP CRM WebClient UI配置的加载逻辑
- SAP CRM one order框架到了S/4HANA后是如何重构的
- SAP CRM WebClient UI Date time format in BSP UI
- 如何在SAP CRM WebClient UI上打开外部链接
- SAP CRM WebClient UI RTL ticket
- 在SAP UI中使用纯JavaScript显示产品主数据的3D模型视图
- SAP Analytics Cloud和SAP Cloud for Customer的集成
- SAP UI5 日期类型 sap.ui.model.type.Date 的解析格式问题分析
- SAP Fiori OData gateway 和后台 ABAP 系统的双缓存表(cache table)设计
- 如何定制化SAP Fiori标准应用里UI字段的标签
- UI5应用clone到webIDE后,如何处理无法加载sap-ui-core.js的错误
- SAP 电商云 Spartacus UI Quick Order 延迟加载的现象分析