日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RxJs 操作符 withLatestFrom 在 SAP 电商云 Spartacus UI 中的应用

發布時間:2023/12/19 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RxJs 操作符 withLatestFrom 在 SAP 电商云 Spartacus UI 中的应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

看下面這段代碼:

getSupportedDeliveryModes(): Observable<DeliveryMode[]> {return this.checkoutStore.pipe(select(CheckoutSelectors.getSupportedDeliveryModes),withLatestFrom(this.checkoutStore.pipe(select(getProcessStateFactory(SET_SUPPORTED_DELIVERY_MODE_PROCESS_ID)))),tap(([, loadingState]) => {if (!(loadingState.loading || loadingState.success || loadingState.error)) {this.loadSupportedDeliveryModes();}}),pluck(0),shareReplay({ bufferSize: 1, refCount: true }));}

調用 withLatestFrom 的 Observable 對象,起到主導數據產生給下游觀察者的作用。作為參數被調用的 Observable 對象只能貢獻新的數據,而不能控制數據的產生時機。

換句話說,上述 Spartacus 的例子,CheckoutSelectors.getSupportedDeliveryModes Observable 對象是向下游產生數據的主導者,而 select(getProcessStateFactory(SET_SUPPORTED_DELIVERY_MODE_PROCESS_ID 只是數據片段的貢獻者。

下圖第 54 行的語法是元祖,元祖也是數組,但各個元素的數據類型不一定必須相同。

第 54 行的 loadingState,代表的就是從 ngrx store 里取出的 setDeliveryModeProcess 的狀態。第 55 行的語義是,如果狀態是 loading 或者 成功,或者是 error ,則不做任何事情,否則調用 58 行的 loadSupportedDeliveryModes, 進行 mode 的加載。

這里我們巧妙的使用了 withLatestFrom, 將 delivery mode 的加載狀態,引入到 getSupportedDeliveryModes 的交互之中。

再看另一個例子:

protected buildRestoreSavedCartEvents<T>(mapping: ActionToEventMapping<T>): () => void {const eventStream$ = this.getAction(mapping.action).pipe(switchMap((action) =>of(action).pipe(withLatestFrom(this.multiCartService.getCart(action.payload.cartId)))),map(([action, cart]) =>createFrom(mapping.event as Type<T>, {...action.payload,cartCode: cart.code,saveCartName: cart.name,saveCartDescription: cart.description,...(cart.saveTime && { saveTime: cart.saveTime }),})));

這里調用 withLatestFrom 的 Observable 對象的類型為 Action,包含一個類型為 string 的字段 type 和類型為 any 的 payload 字段。

貢獻數據即傳入 withLatestFrom 操作符函數的輸入參數,類型為 146 行 this.multiCartService.getCart 的返回參數,類型為 Cart,如下圖所示:

因此,在 pipe 操作符下游即 149 行代碼里,map 的輸入參數為元祖:[ action, cart], 兩個元素的數據類型分別為:

以及:

值得一說的是,combineLatest 和 withLatestFrom 有本質的區別。在前者的調用里,所有參與運算的 Observable 地位都是均等的,只要有任意一個發生變化,combineLatest 都會從所有的輸入 Observable 對象中拿出最后一次產生的數據,組合成數組的數據類型,傳遞給下游。

更多Jerry的原創文章,盡在:“汪子熙”:

總結

以上是生活随笔為你收集整理的RxJs 操作符 withLatestFrom 在 SAP 电商云 Spartacus UI 中的应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲黄片一区二区 | 麻豆蜜桃在线观看 | 国产精品一二三四五区 | 欧美xxxxx视频| 手机在线永久免费观看av片 | www色婷婷| 狠狠操伊人 | 丰满人妻翻云覆雨呻吟视频 | 色呦在线| 91天天综合 | 亚洲免费色 | 五月激情婷婷丁香 | av免费黄色 | 日本国产精品视频 | 国产精品免费一区二区三区都可以 | 99精品一级欧美片免费播放 | 成人av免费网址 | 国产21区 | a毛毛片| 国产色综合天天综合网 | 色哟哟免费 | 国产日韩欧美综合 | 无套中出丰满人妻无码 | 2024av| 国产午夜精品在线 | 欧美整片第一页 | 中文在线а√天堂 | 久久精品久久久久久 | 免费成人深夜夜行网站视频 | 中文字幕在线二区 | 黄色国产一级片 | 国产一区午夜 | 91看片就是不一样 | 6996电视影片免费看 | ts人妖在线观看 | 最新国产在线视频 | 一区二区三区视频免费看 | 日本一区二区视频免费 | 国产理论| 涩涩涩在线视频 | 超碰在线日韩 | 国产麻豆精品久久一二三 | 欧美日本中文字幕 | 91综合在线 | 亚洲无码精品国产 | 卡一卡二在线视频 | 天天干天天上 | 国产肉体xxxx裸体784大胆 | 久久久69| 青青久久av北条麻妃黑人 | 日本91av| 久操视频精品 | 国产伦理吴梦梦伦理 | 超碰在线成人 | 欧美日韩在线免费视频 | 俄罗斯黄色大片 | 国产精品一区二区黑人巨大 | 亚洲天堂视频在线观看 | 一区二区精品在线 | 99re在线视频精品 | 丁香九月婷婷 | 久久精热 | 久久97精品| 深夜福利免费在线观看 | 国产美女精品人人做人人爽 | 日韩精品第二页 | 在线成人免费视频 | 中文字幕乱码免费 | 久久精品噜噜噜成人88aⅴ | 欧美日韩一二 | 国产在线aaa| 国产精品无码在线 | 四季av一区二区凹凸精品 | 美腿丝袜亚洲综合 | 成人久久久久久久 | 成人黄页 | 91亚色在线观看 | 快播在线视频 | 天天摸天天碰 | 色屋永久| 日产久久久久久 | 一区二区视频免费观看 | 国产一级淫片a | 国产综合视频一区 | 日韩一区二区三区在线播放 | 亚洲欧美日韩在线播放 | 中文字幕在线观看日本 | 自拍偷拍亚洲精品 | 国产主播99 | 综合久久激情 | 国产精品无码免费在线观看 | 中文字幕一区二区三区不卡 | 中文字幕 视频一区 | 日韩免费视频观看 | 男人的天堂99 | 国产又粗又猛又爽69xx | 性生活一区| 日本三级一区 | 99日精品 |