gpt4 book ai didi

Angular rxjs : access parameter on http error inside pipe/concatMap?

转载 作者:可可西里 更新时间:2023-11-01 16:35:47 24 4
gpt4 key购买 nike

我目前正在使用 pipe 和 concatMap 来链接多个 http 请求,如下所示:

onErrorResumeNext(from(ids))
.pipe(
delay(10),
concatMap(id => get(id))
)
.subscribe(res => {
if (res = emptydata) return id
});

get 函数处理从 id 数组构建查询字符串,还包含 retry 和 catchError。

现在,问题是如果我在响应对象上没有得到任何数据,我需要访问相同的 id 参数。

有什么想法吗?

最佳答案

concatMap(和其他高阶 Observable 运算符)采用可选的结果选择器函数(注意:已弃用),该函数采用输出值和输入值参数。这允许您将两者传递给流(例如作为数组):

onErrorResumeNext(from(ids))
.pipe(
delay(10),
concatMap(id => get(id), (res, id) => ([res, id]))
)
.subscribe(([res, id]) => {
// note that `return` does nothing here
if (res == emptydata) return id
});

如果 get 是一个 Observable,您还可以在您有权访问它的上下文中返回 id:

concatMap(id => get(id).pipe(
map(res => res != emptydata ? res : id)
)

如果 get 不是数组,您可以使用 Observable 创建函数,例如 from 将其转换为数组。

关于 Angular rxjs : access parameter on http error inside pipe/concatMap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52523395/

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