4879a7b2713f5294ffb2131a961b78bddf66e043ff9ceaa2f30f093303ed123eb9915ec4a6777efc29b15bab36879cccbcf1049cee84fa54b07cdcde7d24ee 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import { Observable } from '../Observable';
  2. import { ConnectableObservable } from '../observable/ConnectableObservable';
  3. import { UnaryFunction } from '../types';
  4. /**
  5. * Returns a connectable observable sequence that shares a single subscription to the
  6. * underlying sequence containing only the last notification.
  7. *
  8. * ![](publishLast.png)
  9. *
  10. * Similar to {@link publish}, but it waits until the source observable completes and stores
  11. * the last emitted value.
  12. * Similarly to {@link publishReplay} and {@link publishBehavior}, this keeps storing the last
  13. * value even if it has no more subscribers. If subsequent subscriptions happen, they will
  14. * immediately get that last stored value and complete.
  15. *
  16. * ## Example
  17. *
  18. * ```ts
  19. * import { ConnectableObservable, interval, publishLast, tap, take } from 'rxjs';
  20. *
  21. * const connectable = <ConnectableObservable<number>>interval(1000)
  22. * .pipe(
  23. * tap(x => console.log('side effect', x)),
  24. * take(3),
  25. * publishLast()
  26. * );
  27. *
  28. * connectable.subscribe({
  29. * next: x => console.log('Sub. A', x),
  30. * error: err => console.log('Sub. A Error', err),
  31. * complete: () => console.log('Sub. A Complete')
  32. * });
  33. *
  34. * connectable.subscribe({
  35. * next: x => console.log('Sub. B', x),
  36. * error: err => console.log('Sub. B Error', err),
  37. * complete: () => console.log('Sub. B Complete')
  38. * });
  39. *
  40. * connectable.connect();
  41. *
  42. * // Results:
  43. * // 'side effect 0' - after one second
  44. * // 'side effect 1' - after two seconds
  45. * // 'side effect 2' - after three seconds
  46. * // 'Sub. A 2' - immediately after 'side effect 2'
  47. * // 'Sub. B 2'
  48. * // 'Sub. A Complete'
  49. * // 'Sub. B Complete'
  50. * ```
  51. *
  52. * @see {@link ConnectableObservable}
  53. * @see {@link publish}
  54. * @see {@link publishReplay}
  55. * @see {@link publishBehavior}
  56. *
  57. * @return A function that returns an Observable that emits elements of a
  58. * sequence produced by multicasting the source sequence.
  59. * @deprecated Will be removed in v8. To create a connectable observable with an
  60. * {@link AsyncSubject} under the hood, use {@link connectable}.
  61. * `source.pipe(publishLast())` is equivalent to
  62. * `connectable(source, { connector: () => new AsyncSubject(), resetOnDisconnect: false })`.
  63. * If you're using {@link refCount} after `publishLast`, use the {@link share} operator instead.
  64. * `source.pipe(publishLast(), refCount())` is equivalent to
  65. * `source.pipe(share({ connector: () => new AsyncSubject(), resetOnError: false, resetOnComplete: false, resetOnRefCountZero: false }))`.
  66. * Details: https://rxjs.dev/deprecations/multicasting
  67. */
  68. export declare function publishLast<T>(): UnaryFunction<Observable<T>, ConnectableObservable<T>>;
  69. //# sourceMappingURL=publishLast.d.ts.map