DebuggableObservable

class DebuggableObservable[Self <: (Observable), +A](val observable: BaseObservable[Self, A])

This implicit class provides debug* methods for observables, e.g.:

stream.debugWithName("MyStream").debugSpyStarts().debugLogEvents()

The result of the chain is an observable that you should use in place of the original observable (stream in this case).

The implicit conversion to this class is defined in the Observable companion object.

This is not a value class because DebuggableSignal needs to extend this. The performance penalty of one extra instantiation per debugged stream should not be noticeable.

class Object
trait Matchable
class Any

Value members

Concrete methods

def debugBreak(when: Try[A] => Boolean): Self[A]

Trigger JS debugger for emitted events and errors if when passes Note: for Signals this also triggers onStart (with the current value at the time)

Trigger JS debugger for emitted events and errors if when passes Note: for Signals this also triggers onStart (with the current value at the time)

def debugBreakErrors(when: Throwable => Boolean): Self[A]

Trigger JS debugger for emitted errors (but not events) if when passes Note: for Signals this also triggers onStart (if current value is an error)

Trigger JS debugger for emitted errors (but not events) if when passes Note: for Signals this also triggers onStart (if current value is an error)

def debugBreakEvents(when: A => Boolean): Self[A]

Trigger JS debugger for emitted events (but not errors) if when passes Note: for Signals this also triggers onStart (if current value is not an error)

Trigger JS debugger for emitted events (but not errors) if when passes Note: for Signals this also triggers onStart (if current value is not an error)

def debugBreakLifecycle: Self[A]

Trigger JS debugger when the observable starts and stops

Trigger JS debugger when the observable starts and stops

def debugBreakStarts: Self[A]

Trigger JS debugger when the observable starts

Trigger JS debugger when the observable starts

def debugBreakStops: Self[A]

Trigger JS debugger when the observable stops

Trigger JS debugger when the observable stops

def debugLog(when: Try[A] => Boolean, useJsLogger: Boolean): Self[A]

Log emitted events and errors if when condition passes, using dom.console.log if useJsLogger is true. Note: for Signals this also triggers on start (with the current value at the time)

Log emitted events and errors if when condition passes, using dom.console.log if useJsLogger is true. Note: for Signals this also triggers on start (with the current value at the time)

def debugLogErrors(when: Throwable => Boolean): Self[A]

Log emitted errors (but not regular events) if when condition passes Note: for Signals this also triggers onStart (if current value is an error)

Log emitted errors (but not regular events) if when condition passes Note: for Signals this also triggers onStart (if current value is an error)

def debugLogEvents(when: A => Boolean, useJsLogger: Boolean): Self[A]

Log emitted events (but not errors) if when condition passes, using dom.console.log if useJsLogger is true. Note: for Signals this also triggers onStart (if current value is not an error)

Log emitted events (but not errors) if when condition passes, using dom.console.log if useJsLogger is true. Note: for Signals this also triggers onStart (if current value is not an error)

def debugLogLifecycle(logStarts: Boolean, logStops: Boolean): Self[A]

Log when the observable starts and stops

Log when the observable starts and stops

def debugLogStarts: Self[A]

Log when the observable starts

Log when the observable starts

def debugLogStops: Self[A]

Log when the observable stops

Log when the observable stops

def debugSpy(fn: Try[A] => Unit): Self[A]

Execute fn on every emitted event or error Note: for Signals this also triggers onStart (with the current value at the time)

Execute fn on every emitted event or error Note: for Signals this also triggers onStart (with the current value at the time)

def debugSpyErrors(fn: Throwable => Unit): Self[A]

Execute fn on every emitted error (but not regular events) Note: for Signals this also triggers onStart (if current value is an error)

Execute fn on every emitted error (but not regular events) Note: for Signals this also triggers onStart (if current value is an error)

def debugSpyEvents(fn: A => Unit): Self[A]

Execute fn on every emitted event (but not error) Note: for Signals this also triggers onStart (if current value is not an error)

Execute fn on every emitted event (but not error) Note: for Signals this also triggers onStart (if current value is not an error)

def debugSpyLifecycle(startFn: Int => Unit, stopFn: () => Unit): Self[A]

Execute callbacks on when the observable starts and stops

Execute callbacks on when the observable starts and stops

Value parameters:
startFn

topoRank => ()

def debugSpyStarts(fn: Int => Unit): Self[A]

Execute callbacks on when the observable starts

Execute callbacks on when the observable starts

Value parameters:
fn

topoRank => ()

def debugSpyStops(fn: () => Unit): Self[A]

Execute callbacks on when the observable stops

Execute callbacks on when the observable stops

def debugTopoRank: Int

Return the observable's topoRank. This does not affect the observable in any way.

Return the observable's topoRank. This does not affect the observable in any way.

def debugWithName(displayName: String): Self[A]

Create a new observable that listens to the original, and set the displayName of the new observable. This is different from setDisplayName.

Create a new observable that listens to the original, and set the displayName of the new observable. This is different from setDisplayName.

If you say stream.debugWithName("foo").debugLog(), the displayName used by the logger will be "foo" verbatim, whereas if you say stream.setDisplayName("foo").debugLog(), the logger's displayName will be "foo|Debug" – with a suffix – to differentiate it from the "foo" displayName of stream itself.

Concrete fields