Rxjs 可观察验证流中的项目(通过或抛出)
给定一个可观察对象中的流,我想验证/检查每个项目。如果一个被破坏,我想通过Observable.throw抛出一个错误,从而破坏所有进一步的处理 我笨拙的解决办法是Rxjs 可观察验证流中的项目(通过或抛出),rxjs,reactivex,Rxjs,Reactivex,给定一个可观察对象中的流,我想验证/检查每个项目。如果一个被破坏,我想通过Observable.throw抛出一个错误,从而破坏所有进一步的处理 我笨拙的解决办法是 import * as Rx from 'rxjs' inputStream.mergeMap(item => (isValid(item)) ? Rx.Observable.of(item) : Rx.Observable.throw(new Error("not valid")) ) 这看起来很难看,因
import * as Rx from 'rxjs'
inputStream.mergeMap(item => (isValid(item))
? Rx.Observable.of(item)
: Rx.Observable.throw(new Error("not valid"))
)
这看起来很难看,因为它为正流构造了一堆不必要的观测值
有没有更好的方法来检查可观察对象中的项目?您可以使用普通
映射,并在其中抛出异常:
inputStream.map(item => {
if (isValid(item)) {
return item;
}
throw new Error("not valid");
})
您可以仅使用普通映射
并在其内部引发异常:
inputStream.map(item => {
if (isValid(item)) {
return item;
}
throw new Error("not valid");
})
如果我能很好地理解您的问题,您可以使用takeWhile
操作符来执行此操作。比如,
yourObservable.takeWhile(item => {
//your condition
}).subscribe(i => console.log(i));
当表达式为真时,它只接受值。当它变为false时,它停止
你可以从中学到更多。你也可以退房。我希望有帮助 如果我能很好地理解您的问题,您可以使用takeWhile
操作符来执行此操作。比如,
yourObservable.takeWhile(item => {
//your condition
}).subscribe(i => console.log(i));
当表达式为真时,它只接受值。当它变为false时,它停止
你可以从中学到更多。你也可以退房。我希望有帮助 这对于静默验证非常有用。谢谢在这种情况下,我需要抛出错误。仍然感谢。这对于无声验证来说是非常好的。谢谢在这种情况下,我需要抛出错误。还是谢谢你。