我有两个可观察者Observable<boolean>
我想合并结果,例如false + false
,false+true
等
this.loaded$.pipe(
merge(this.loading$)
).subscribe(console.log); //`false`,`false`; `true`,`false`; etc
比我想根据条件将流转换为单个布尔可观察量:
如果val1+val2 == 1
- 返回false
;如果val1+val2 !== 1
- 返回true
;
所以问题是你如何改变merged
可观测量?
UPDATE1:
想要使用combineLatest
但遇到问题:
combineLatest(
this.loaded$, this.loading$,
(val1, val2) => val1 + val2 === 1
);
[ts]运营商&#39; +&#39;不能应用于类型&#39; {}&#39;和布尔&#39;。
UPDATE2
.subscribe()
上不存在 combineLatest()
combineLatest(
this.loaded$, this.loading$,
(val1, val2) => (val1, val2) => Number(val1) + Number(val2) === 1
).subscribe(); // does not work
[ts] Property&#39; subscribe&#39;类型&#39; OperatorFunction&lt; {}上不存在, 数&GT;&#39;
UPDATE3:
我在Why `combineLatest` returns OperatorFunction<{}, number>
答案 0 :(得分:2)
[ts]属性'subscribe'在类型'OperatorFunction&lt; {},number&gt;'上不存在。
如果要更改需要使用cd /home # or whatever your home path
for d in * # iterate everything
do
if [[ -d "$d" && "$d" != "lost+found" ]] # process dirs but not lost+found
then # add others if needed
echo Processing "$d"
continue # REMOVE WHEN YOU UNDERSTAND THE SCRIPT
continue # ARE YOU SURE
continue # THIS IS YOUR LAST WARNING
u=$(stat -c "%U" "$d") # get user of each dir
mkdir -p "$d"/new_dir # creat the dir regardles if exists
chown "$u" "$d"/new_dir # set ownership to rightful owner
fi # consider setting group ownership
done
的类型,则尝试将输出从布尔值转换为数字时会出现此错误,但一次只需要一个可观察的流,据我所知。
建议您使用下面给出的SwitchMap
来解决您的问题。
作为布尔结果,您应该应用逻辑运算符(&amp;&amp;或||)来获取输出,而不是数值运算符
forkjoin
正如您已经知道的那样,您将收到两个值,即您有固定数量的请求,并且两者都需要完成才能获得结果,那么您应该使用forkJoin
(val1, val2) => val1 && val2
你想要实现的目标并不多,但是如果你想申请async getResult()
{
const example = await forkJoin( request1, request2).toPromise();
const output = example [0] && example[1];
}
那么你应该将你的布尔值转换成如下所示的数字
+
答案 1 :(得分:0)
您可以使用mapXXX运算符来实现它。 对于Ex:
this.loaded$.pipe(
merge(this.loading$),
map((value) => val > 5 ? true : false)
).subscribe(console.log); //`false`,`false`; `true`,`false`; etc