简体   繁体   English

RxJS 另一个发出值时可观察到的错误

[英]RxJS Error Observable when another emits value

Contrived example of what I'm trying to do here:我在这里尝试做的人为示例:

const source = interval(1000);
const errorWhenThisEmits = timer(2500);

source.pipe(/* someOperatorHere? */).subscribe({
  next: () => console.log('next!'),
  error: (err) => console.log(err)
});

// desired outcome:
// 1000ms: next!
// 2000ms: next!
// 2500ms: error message

Is it possible to cause the source observable to error when the second observable emits a value?当第二个 observable 发出一个值时,是否有可能导致源 observable 出错?

takeUntil gets close, but completes instead of errors. takeUntil接近,但完成而不是错误。

You could merge the observables你可以合并可观察的

const source = interval(1000);
const notifier = timer(2500).pipe(switchMap(() => throwError("error message")));

merge(source, notifier).subscribe({
  next: () => console.log("next!"),
  error: err => console.log(err)
});

See stackblitz: https://stackblitz.com/edit/rxjs-ony9vx?file=index.ts参见stackblitz: https://stackblitz.com/edit/rxjs-ony9vx?file=index.ts

Discovered takeUntil will error the parent observable if the notifier observable errors.如果通知器 observable 出错,发现takeUntil将出错父 observable。

const source = interval(1000);
// added switchMap to throwError
const notifier = timer(2500).pipe(switchMap(() => throwError('error!')));

source.pipe(takeUntil(notifier)).subscribe({
  next: (data) => console.log(data),
  error: (err) => console.log(err)
});

This outputs:这输出:

0
1
error!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 当另一个Observable发出时,如何停止发出的值? - How to stop an emited value when another Observable emits? RXJS:如何使用 takeUntil 直到另一个 Observable 完成(而不是发出) - RXJS: How to use takeUntil until another Observable completes (and not emits) 如何在源Observable发出但仅使用最新值时切换到另一个Observable - How to switch to another Observable when a source Observable emits but only use latest value 当它发出某个值时,取消可观察的订阅 - unsubscribe from observable when it emits a certain value RxJS - 当 takeUntil 及其通知器 observable 在同一个内部 observable 中发出时,Observable 不会执行 - RxJS - Observable does not execute when takeUntil and its notifier observable emits in the same internal observable 在 RxJS 中,是否应该在不发出任何项目的可观察对象中调用 complete? - In RxJS, should complete be called in an observable that emits no items? RxJS 仅当第一个(源)observable 发出一个值而不是其他组合的 observable 时才发出一个值 - RxJS Emit a value only if the first (source) observable emits a value and not other combined observables 如果另一个序列发出,则取消可观察 - Cancel observable if another sequence emits RXJS 在另一个 Observable 的 Emitted Value 上重复 Observable 的最新值 - RXJS Repeat latest Value of Observable on Emitted Value of another Observable RXJS - 执行 map 时返回可观察值 - RXJS - return observable value when doing a map
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM