gpt4 book ai didi

Angular 2如何防止订阅触发,除非 map 返回的两个值中的任何一个发生变化

转载 作者:太空狗 更新时间:2023-10-29 18:32:08 25 4
gpt4 key购买 nike

我发现了一个不太容易解决的简单问题,我试图让订阅不触发,除非 sorting.changespagination.changes 已更改。我猜 distinctUntilChanged 应该被使用,但是我不知道应该提供什么作为它的参数,因为我有两个值需要检查而不是一个。

编辑(这次是正确的订阅调用):这是订阅调用:

this.requestParamsSubscription = this.store.select('brands')
.distinctUntilChanged()
.map((brands: IBrandsStorage) => {
return {sorting: brands.sorting, pagination: brands.pagination};
})
.subscribe(
params => {
this.store.dispatch({type: BrandsActions.GET_BRANDS_REQUEST});
}
);
对象的

changes 是一个简单的数字计数器,它跟踪更改,我想我可以用它来检查自上次以来对象是否发生了变化。

有什么想法吗?

最佳答案

distinctUntilChanged可以传递一个比较函数(如果参数不变,它应该返回 true)。如果必须更改 alltotal,您可以使用:

this.brandsStorageSubscription = this.store.select('brands')
.map((brands: IBrandsStorage) => ({ all: brands.all, total: brands.total }))
.distinctUntilChanged((a, b) => (a.all === b.all) && (a.total === b.total))
.subscribe(
brands => {
console.log(brands);
this.total = brands.total;
this.brands = brands.all;
}
);

关于Angular 2如何防止订阅触发,除非 map 返回的两个值中的任何一个发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41738650/

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