gpt4 book ai didi

typescript - 将多个参数传递给 rxjs 运算符

转载 作者:搜寻专家 更新时间:2023-10-30 20:36:54 24 4
gpt4 key购买 nike

是否有更优雅的方式来执行以下操作?

private getHeaders(): Observable<any> {
let version;
let token;
return this.appInfo.getVersion()
.pipe(
tap(appVersion => version = appVersion),
mergeMap(() => this.storage.get('access_token')),
tap(accessToken => token = accessToken),
mergeMap(accessToken => of(this.createHeaders(version, token)))
);
}

我怎样才能更流利记住 this.appInfo.getVersion()this.storage.get('access_token')< 的两个返回值 而不是使用 rxjs 的强大功能将它们写入临时变量?

也许将一些可观测值合并为一个?有太多的 rxjs 运算符和东西......

最佳答案

使用forkJoin:

.pipe(
mergeMap((appVersion) => forkJoin(
of(appVersion),
this.storage.get('access_token').take(1)
)),
mergeMap(([version, token]) => {
this.createHeaders(version, token)
})
)

但使用 withLatestFrom 更容易:

.pipe(
withLatestFrom(this.storage.get('access_token')),
mergeMap(([version, token]) => {
this.createHeaders(version, token)
})
)

我将两者都包括在内,因为 withLatestFrom 更容易,但应该在需要访问初始参数的地方使用 forkJoin。例如,如果您正在执行 this.storage.get(appVersion)

关于typescript - 将多个参数传递给 rxjs 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49774676/

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