Function createServiceListener

  • Creates a Service - a concurrency-controlled wrapper around an effect, which tracks state over the effect's lifecycle events. The effect can be a Promise-or-Observable returning function, and is cancelable if Observable. By default its concurrency is to run handlers immediately, but this is overridable with a 5th parameter - an RxJS operator implmenting the desired concurrency.

    Type Parameters

    • TRequest
    • TNext = void
    • TError = Error
    • TState = null | TNext

    Parameters

    • actionNamespace: string

      Prefix of all actions: The 'search' in search/request

    • bus: Bus<Action<void | TRequest | TNext | TError>>

      The Bus event bus triggered to and listened on

    • handler: EventHandler<TRequest, TNext>

      A function returning a Promise, Observable, or Promise thunk from whose life-cycle events are triggered.

    • reducerProducer: ReducerProducer<TRequest, TNext, TError, TState> = ...

      A function returning a reducer which populates .state. Recieves ProcessLifecycleActions as its argument. Defaults to producing state which is always the most recently returned response from the handler.

    • concurrencyOperator: {
          <T, O>(project, concurrent?): OperatorFunction<T, ObservedValueOf<O>>;
          <T, O>(project, resultSelector, concurrent?): OperatorFunction<T, ObservedValueOf<O>>;
          <T, R, O>(project, resultSelector, concurrent?): OperatorFunction<T, R>;
      } = mergeMap

      RxJS Operator to control what to do when an existing handler is in progress. Defaults to mergeMap (Immediate)

        • <T, O>(project, concurrent?): OperatorFunction<T, ObservedValueOf<O>>
        • Type Parameters

          • T
          • O extends ObservableInput<any>

          Parameters

          • project: ((value, index) => O)
              • (value, index): O
              • Parameters

                • value: T
                • index: number

                Returns O

          • Optional concurrent: number

          Returns OperatorFunction<T, ObservedValueOf<O>>

        • <T, O>(project, resultSelector, concurrent?): OperatorFunction<T, ObservedValueOf<O>>
        • Type Parameters

          • T
          • O extends ObservableInput<any>

          Parameters

          • project: ((value, index) => O)
              • (value, index): O
              • Parameters

                • value: T
                • index: number

                Returns O

          • resultSelector: undefined
          • Optional concurrent: number

          Returns OperatorFunction<T, ObservedValueOf<O>>

        • <T, R, O>(project, resultSelector, concurrent?): OperatorFunction<T, R>
        • Type Parameters

          • T
          • R
          • O extends ObservableInput<any>

          Parameters

          • project: ((value, index) => O)
              • (value, index): O
              • Parameters

                • value: T
                • index: number

                Returns O

          • resultSelector: ((outerValue, innerValue, outerIndex, innerIndex) => R)
              • (outerValue, innerValue, outerIndex, innerIndex): R
              • Parameters

                • outerValue: T
                • innerValue: ObservedValueOf<O>
                • outerIndex: number
                • innerIndex: number

                Returns R

          • Optional concurrent: number

          Returns OperatorFunction<T, R>

    Returns Service<TRequest, TNext, TError, TState>

    A service in immediate mode, or the mode implemented by its concurrencyOperator argument

    Summary

    immediate mode