问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

SAP电商云SpartacusUIActiveCartServiceisStable调用何时返回true_百度...

发布网友 发布时间:2024-09-25 19:08

我来回答

1个回答

热心网友 时间:2024-10-04 09:52

loading从true变为false:

单从这个initiator栏,是很难找到是哪一行应用代码,发起的这个cart加载:

根据[Cart]LoadCart关键字搜索是能找到的:

最后找到了准确的代码行数,调用CartConnector去读取数据:

首先查看针对这个cart,是否存在pending请求:

使用withLatestFrom操作符,查看这个cart是否有PendingProcesses:

withLatestFrom(this.store.pipe(select(getCartHasPendingProcessesSelectorFactory(payload.cartId))))

这里使用withLatestFrom,从另一个Observable里进行数据查询。

下面这段代码组合了两个按照不同时间间隔,分别发射递增整数序列的Observable:

//RxJSv6+import{withLatestFrom,map}from'rxjs/operators';import{interval}from'rxjs';//emitevery5sconstsource=interval(5000);//emitevery1sconstsecondSource=interval(1000);constexample=source.pipe(withLatestFrom(secondSource),map(([first,second])=>{return`FirstSource(5s):${first}SecondSource(1s):${second}`;}));/*"FirstSource(5s):0SecondSource(1s):4""FirstSource(5s):1SecondSource(1s):9""FirstSource(5s):2SecondSource(1s):14"...*/constsubscribe=example.subscribe(val=>console.log(val));

因为hostObservable的时间间隔为5秒,所以每个5秒钟,console面板新增一条输出,且hostObservable的递增值为5,但此时因为使用withLatestFrom操作符传入的输入Observable的时间间隔为1秒,因此每个5秒过去后,secondObservable的递增序列为5:

如果有,就不继续进行下去了,通过filter操作符阻止进一步执行。

能进行到代码60行,说明此时没有pendingProcess施加在Cart上。

ActiveCartServicei依赖到MultiCartService:

在isStableSelector里加上打印语句:

会频繁触发:

比如下面这个调用会触发:

此处加载当前user的cart:

为什么会触发下面这段代码?因为Spartacus有大量createSelect的调用:

如下图所示:

createSelector的输入参数由一个Selector和projector组成。

createSelector支持数量可变的参数,前n-1个参数都被当成selector处理,最后一个参数为projector:

下图getCartIsStableSelectorFactory实现体的第58行代码为什么会被调用?

是因为MultiCartService的isStable方法在CartLoad场景里被调用?

确实如此:

所以每一次可能引起isStable返回值发生变化的时候,getCartIsStableSelectorFactory里的projector都会被调用,重新计算isStable的最新值。

原文:https://juejin.cn/post/7097393793283915783

热心网友 时间:2024-10-04 09:54

loading从true变为false:

单从这个initiator栏,是很难找到是哪一行应用代码,发起的这个cart加载:

根据[Cart]LoadCart关键字搜索是能找到的:

最后找到了准确的代码行数,调用CartConnector去读取数据:

首先查看针对这个cart,是否存在pending请求:

使用withLatestFrom操作符,查看这个cart是否有PendingProcesses:

withLatestFrom(this.store.pipe(select(getCartHasPendingProcessesSelectorFactory(payload.cartId))))

这里使用withLatestFrom,从另一个Observable里进行数据查询。

下面这段代码组合了两个按照不同时间间隔,分别发射递增整数序列的Observable:

//RxJSv6+import{withLatestFrom,map}from'rxjs/operators';import{interval}from'rxjs';//emitevery5sconstsource=interval(5000);//emitevery1sconstsecondSource=interval(1000);constexample=source.pipe(withLatestFrom(secondSource),map(([first,second])=>{return`FirstSource(5s):${first}SecondSource(1s):${second}`;}));/*"FirstSource(5s):0SecondSource(1s):4""FirstSource(5s):1SecondSource(1s):9""FirstSource(5s):2SecondSource(1s):14"...*/constsubscribe=example.subscribe(val=>console.log(val));

因为hostObservable的时间间隔为5秒,所以每个5秒钟,console面板新增一条输出,且hostObservable的递增值为5,但此时因为使用withLatestFrom操作符传入的输入Observable的时间间隔为1秒,因此每个5秒过去后,secondObservable的递增序列为5:

如果有,就不继续进行下去了,通过filter操作符阻止进一步执行。

能进行到代码60行,说明此时没有pendingProcess施加在Cart上。

ActiveCartServicei依赖到MultiCartService:

在isStableSelector里加上打印语句:

会频繁触发:

比如下面这个调用会触发:

此处加载当前user的cart:

为什么会触发下面这段代码?因为Spartacus有大量createSelect的调用:

如下图所示:

createSelector的输入参数由一个Selector和projector组成。

createSelector支持数量可变的参数,前n-1个参数都被当成selector处理,最后一个参数为projector:

下图getCartIsStableSelectorFactory实现体的第58行代码为什么会被调用?

是因为MultiCartService的isStable方法在CartLoad场景里被调用?

确实如此:

所以每一次可能引起isStable返回值发生变化的时候,getCartIsStableSelectorFactory里的projector都会被调用,重新计算isStable的最新值。

原文:https://juejin.cn/post/7097393793283915783
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
ef英语哪个好 EF英孚英语培训怎么样? 英孚英语好不好 EF英孚教育到底好不好 大佬们,麦芒7和荣耀10那个值得入手?2500以下的机子还有啥好推荐的么... 介绍几款2500元以前的手机 像素一定要高 其他的不做要求 近期想入手一部安卓手机,价格2200到2500左右…买HTC desire Z还是 三星... 笔记本忘记开机密码怎么办急死了 笔记本电脑屏幕开机锁忘记密码 怎么办?急死了 华硕笔记本电脑开机密码忘记了怎样找回?系统是Windows 7旗舰版... 浙传的宿舍是什么样子的_浙传桐乡校区和本校区的区别 咸阳招商银行卡在餐饮哪些地方打折 无为的反义词 星际争霸战役编辑器能用来修改官方战役吗? 9岁小男孩太难管教了!!!心理学的高手们帮帮忙谢谢了!! 小时候是外婆和妈妈带,孩子长大还是和奶 羊水偏多怎么恢复正常 羊水过多的原因 伴君如伴虎指的是哪个皇帝 985大学里寝室有空调有独卫的大学有哪些? 魔兽地图编辑器如何修改战役地图 整体企业资产评估考虑的因素 石榴石微粉可以用于哪些行业 小米电池补电模式怎么进入 资产评估方法的选择要考虑哪些因素 廊坊银行办理什么贷款利率 天津到乌鲁木齐飞多长时间_京津冀互联互通卡乌鲁木齐能用吗 伴君如伴虎,你认为呢? 干粉条放了五六年了还能吃吗视频 氧化铝陶瓷片定义 男子"被欠费"卷入"洗钱案" 不敢声张被骗走952万是怎么回事? 网销新三板构成什么罪 怀孕后期羊水多怎么办 无为反义词的成语有 山东著名特产有哪些 在无锡注册化工销售公司可以吗,到多少手续费?(小规模,非危险品)_百度... 调查:由外公外婆带大的孩子长大了之后都和谁亲 YY如何申请加入公会的详细步骤? 我求求社会好心人给我指条明路吧,活不下去了太痛苦了, 许昌瑞贝卡大酒店早餐怎么样 亲人和朋友一起, 用一个成语 或 一句诗来 怎么样表达其中的情感所在 北大青鸟设计培训:大学生毕业后来学软件开发可以吗? 羊水多怎么办怎么缓解 微信号是如何修改的。 UVlayout打不开我做的模型,如何检查3d max的模型点线面的问题? 糖尿病和高血压患者可以吃燕窝吗 新三板股权销售违法吗法律上如何认定 屋顶卷材防水怎么算工程量? 许昌有哪些便宜又好住的度假酒店? 动漫推荐点,多多益善真心觉得好看,火影海贼之类的就不要了太长了,最 ... 高杠杆基金有哪些