gpt4 book ai didi

javascript - rxjs 过滤器在 false 条件下不返回任何内容

转载 作者:行者123 更新时间:2023-11-30 20:16:26 27 4
gpt4 key购买 nike

我编写了这段代码:

from(getState().servers)
.filter(server => server.apps.length == 0)
.take(1)
.mergeMap(element => element.length === 0 ? atLeastOneApp : of(element))
.mergeMap(server => of(server.key))
.subscribe(
(key) => dispatch({
type:ADD_APP,
payload:{
key,
appName
}
}),
(err) => console.log(err)
);


const atLeastOneApp = from(getState().servers)
.filter(server => server.apps.length == 1)
.take(1);

只需要过滤运行零个/一个应用程序的元素。问题是在第一个过滤器中,如果 server.apps.length 不为零,它不会产生任何结果(我期待 null undefined[],试图在控制台上打印但没有任何变化。

我该如何修复这段代码?我也尝试过 takeWhile 运算符,但没有任何改变。

谢谢

最佳答案

RxJS 的 filter 从管道中过滤掉值,所以如果 server.apps.length != 0 值不会“进一步”到 (1) 然后到subscribe()

你可以使用map(server => server.apps.length == 0? server: null)

编辑: subscribe() 不要采用第二个函数属性。要捕获错误,请在管道中使用 RxJS 的运算符 catchError()

关于javascript - rxjs 过滤器在 false 条件下不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51874641/

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