Rxjs 等待一组发射在可见光中发生
给定一个将项目推入可观察a的流 当一个数据库中正好有3个项目时,如何通知订阅者 要将其可视化:Rxjs 等待一组发射在可见光中发生,rxjs,Rxjs,给定一个将项目推入可观察a的流 当一个数据库中正好有3个项目时,如何通知订阅者 要将其可视化: --o--i--o------i---------o----i------|---> A 我需要等待所有I到达,即使存在其他项目,如o 如果在一个时间范围内没有准确地推送3个is,则触发一个错误以重做该过程 谢谢。我将只过滤I字符,统计所有发出的项目,直到源代码完成,并确定项目数是否正确,最终抛出错误 import {Observable} from 'rxjs'; Observable.f
--o--i--o------i---------o----i------|---> A
我需要等待所有I
到达,即使存在其他项目,如o
如果在一个时间范围内没有准确地推送3个i
s,则触发一个错误以重做该过程
谢谢。我将只过滤I
字符,统计所有发出的项目,直到源代码完成,并确定项目数是否正确,最终抛出错误
import {Observable} from 'rxjs';
Observable.from(['o', 'i', 'o', 'i', 'o', 'i'/*, 'i'*/])
.filter(val => val == 'i')
.count()
.concatMap(count => count == 3 ? Observable.of(count) : Observable.throw('Expected 3 values'))
.subscribe(
count => console.log(count),
err => console.log(err)
);
它将打印到控制台:
3
如果您在可观察的源中再添加一个i
,订户将收到一个错误:
Expected 3 values
见现场演示:
如果您想在发生错误时重新订阅,请使用或。另一个演示首先失败,因为它只包含2个i
s,但它使用retry()
重新订阅,然后成功
这里有一个更复杂的演示:我将使用它只过滤I
字符,对源代码完成之前发出的所有项目进行计数,并确定项目数是否正确,最终抛出错误
import {Observable} from 'rxjs';
Observable.from(['o', 'i', 'o', 'i', 'o', 'i'/*, 'i'*/])
.filter(val => val == 'i')
.count()
.concatMap(count => count == 3 ? Observable.of(count) : Observable.throw('Expected 3 values'))
.subscribe(
count => console.log(count),
err => console.log(err)
);
它将打印到控制台:
3
如果您在可观察的源中再添加一个i
,订户将收到一个错误:
Expected 3 values
见现场演示:
如果您想在发生错误时重新订阅,请使用或。另一个演示首先失败,因为它只包含2个i
s,但它使用retry()
重新订阅,然后成功
下面是更复杂的演示: