zl程序教程

您现在的位置是:首页 >  其他

当前栏目

SAP 电商云 Spartacus UI 设置 Delivery Mode 的时序分析和一个竞争条件问题分享

SAPUI 分析 一个 设置 分享 条件 电商
2023-09-14 09:02:53 时间

(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的原创文章,尽在:“汪子熙”: