gpt4 book ai didi

javascript - Observable - 满足条件时停止序列

转载 作者:行者123 更新时间:2023-11-29 20:51:42 24 4
gpt4 key购买 nike

我有一个对象数组,我需要在每个对象上调用一个返回可观察对象的服务,但如果满足某些条件(例如服务返回错误),我想停止序列。

const array = [
{name: 'A', valid: true},
{name: 'B', valid: true},
{name: 'C', valid: false},
{name: 'D', valid: true}
];

const fnc = (obj) => {
console.log(obj.name);
return of(obj.valid).pipe(delay(500));
};

在这种情况下,用于仅记录 A 和 B 的 Observable 操作链应该是什么?

最佳答案

如果您需要进行单独的异步以查明每个项目是否有效,您可以简单地使用 concatMap:

from(array).pipe(
concatMap(obj => http.get(...).pipe(mapTo(obj))),
})
.subscribe(...);

您说过当项目无效时服务会返回错误,因此如果 http.get 调用失败,则 concatMap 会发出错误。

但是,如果您只想完成链而不发出错误(或者如果服务在项目无效时不发出错误),您可以使用 takeWhile():

from(array).pipe(
concatMap(obj => http.get(...).pipe(
map(valid => {
obj.valid = valid;
return obj;
}),
)),
takeWhile(obj => obj.valid),
})
.subscribe(...);

关于javascript - Observable - 满足条件时停止序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51521269/

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