gpt4 book ai didi

angular - concatMap 没有得到后续存储发出

转载 作者:行者123 更新时间:2023-12-04 17:54:06 25 4
gpt4 key购买 nike

我有这个设置:

public listenCampaignSelected(){
var campaignSelected$ = this.store
.select(store => store.appDb.uiState.campaign.campaignSelected)
var campaigns$ = this.store
.select(store => store.msDatabase.sdk.table_campaigns);

return campaignSelected$.concatMap(
v => campaigns$,
(campaignId,campaigns) => {
return campaigns.find((i_campaign: CampaignsModelExt) => {
return i_campaign.getCampaignId() == campaignId;
});
})
}

除了第一次订阅外,没有任何东西发出。
现在 $campaignSelected 中的值正在发生变化,我可以看到商店正在更新。

这就是我订阅的方式:
this.yp.listenCampaignSelected().subscribe(
(campaign:CampaignsModelExt) => {
this.campaignModel = campaign;
this.renderFormInputs();
});

现在这里是有趣的事情,如果我改变 concatMapswitchMap所有作品。

所以我试图理解为什么 switchMap 在这种情况下会起作用而 concatMap 不起作用

最佳答案

所以答案是, concatMap 将不起作用,因为第二个流不会更改更改/触发。因此你想使用 switchMap无论该流有任何更改,它都会切换新流:

  var campaignSelected$ = this.store.select(store => store.appDb.uiState.campaign.campaignSelected)
var campaigns$ = this.store.select(store => store.msDatabase.sdk.table_campaigns);
return campaignSelected$.switchMap(v => campaigns$, (campaignId,campaigns)=> {
return campaigns.find((i_campaign: CampaignsModelExt) => {
return i_campaign.getCampaignId() == campaignId;
});
})

关于angular - concatMap 没有得到后续存储发出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41882680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com