🗡️
ConanJs
  • What is ConanJs?
  • Why ConanJs...
    • ... if coming from Redux
    • ... if using vanilla React
    • ... if learning React
    • ... if not using React
  • How to install/use ConanJs
  • About us / Github / Contact us
  • Demos
    • Demo Gallery
    • Conan State Demos
      • Hello World
      • Todos
        • Todos - Basic
        • Todos - Async
        • Todos - Optimistic
      • Github issues viewer
    • Conan Flow Demos
      • Authentication
  • CONAN DATA
    • General Concepts
    • Conan State
      • Actions & Reducers
        • Reducers
        • Actions
      • Creating State
      • Observing State
        • Live rendering
        • Connecting
      • Composing State
      • Scaling State
      • Orchestrating State
      • Life cycle
        • Async handling
        • Introspection
      • Testing state
    • Conan Flow
      • Creating Flows
      • Serialising Flows
      • Observing Flows
  • CONAN Runtime
  • Dependency Injection
    • General Concepts
    • Creating the Context
    • Using the Context
  • ASAPs
  • Logging
  • API
    • Main Classes
      • Conan
        • StateDef
      • ConanState
      • ConanFlow
        • UserFlowDef
        • UserStatusDef
        • Status
    • Conan State Classes
      • Thread
      • ConnectedState
      • MonitorInfo
      • MetaInfo
    • Dependency Injection
      • DiContextFactory
    • ASAPS
      • Asaps
      • Asap
Powered by GitBook
On this page
  • Introduction
  • The Meta Flow Statuses
  • The MetaInfo
  • Transactions
  • Accessing the Meta Flow
  • Stop / Start
  • Error Handling

Was this helpful?

  1. CONAN DATA
  2. Conan State
  3. Life cycle

Introspection

PreviousAsync handlingNextTesting state

Last updated 4 years ago

Was this helpful?

Introduction

ConanJs gives you the ability to check on its internal status so that you can leverage this information for common use cases. For instance:

  • You can check if there has been an error and handle it anyway you prefer.

  • You can check if there are operations running at the moment, and wait for them to finish, .

  • You can also test for the state to be stopped / started so you can react accordingly.

The Meta Flow Statuses

These are the different statuses in the meta flow:

  • starting. The Conan State is starting

  • init. The Conan State has started and reached the first initial state.

  • running. The Conan State is running at least one action (sync or async)

  • idle. The Conan State is started but is not running anything at the moment.

  • idleOnTransaction. Similar, but on a transaction, while on a transaction, the idle status only is reached when the transaction is closed. This is very handy for

  • error An error has occurred

The MetaInfo

  • lastError: The last error raised

  • transactionCount: The count of transactions opened at the moment.

  • status: One of

export enum MetaStatus {
    STARTING = 'STARTING',
    INIT = "INIT",
    RUNNING = "RUNNING",
    ERROR = "ERROR",
    IDLE = "IDLE",
    IDLE_ON_TRANSACTION = "IDLE_ON_TRANSACTION",
}

Transactions

numberValue$.openTransaction(`test-transaction`)

When you open a transaction, the IDLE state will only be reached if all actions (sync and async) are fulfilled and the transaction is closed

numberValue$.closeTransaction()

In future releases we are hoping for transactions to be much powerful and let you perform operations like rollbacks / commits...

Stay tuned!

Accessing the Meta Flow

numberValue$.metaFlow

Stop / Start

ConanState objects can be stopped and started on demand. At the moment they always start up started.

Stopping / Starting Conan State can be useful if you need to work with streams of data or other similar use cases.

At the moment this is not something that you are going to fully leverage as our APIs need to be matured.

Error Handling

A particular use case to access the meta flow is to handle errors, every time an exception is thrown in your code, it is caught and the monitor is updated to reflect this.

This is handy if you want to then add a toast message or something similar.

We see error handling to be associated with the transactions, as mentioned above, this is something where we are expecting to provide with more features in the next releases/

The information for each status is encapsulated in a object, which has three properties:

Is possible to open a transaction for a

As of v1.0 transactions don't really honour their name, ie, they only let you group actions to know when they complete, which we think is very useful for

In every , you have a property to retrieve the meta Flow

You can check our docs to see how you can normally access the different statuses.

We do have dedicated sections for error handling and which are heavily connected to the Meta Flow

very handy for testing
testing
MetaInfo
ConanState
testing
Conan State
Conan Flows
testing state
Working hard on the next version!