1.0.4 • Published 5 years ago

@thejohnfreeman/await-observable v1.0.4

Weekly downloads
5
License
MIT
Repository
github
Last release
5 years ago

await-observable

Asynchronous functions for observables.

npm code style: Prettier build status

A longer version of the justification for this library is available on my blog. In brief, we're missing the observable equivalent of asynchronous functions. Chaining operators like map, filter, and catchError with observables that yield a single value is as painful as chaining callbacks on promises. Asynchronous functions let us write asynchronous code in a synchronous style, which is easier to read, write, and comprehend. Short of native syntax like async/await, we can offer a decorator for generator functions.

Usage

import { async } from '@thejohnfreeman/await-observable'

const logIn = async(function*({ username, password }) {
  try {
    const token = yield ajax.getJSON(
      'https://example.com/login', { username, password })
    return { value: token }
  } catch (cause) {
    return { error: 'Wrong username or password.' }
  }
})

const observable = logIn({ username, password }) // Request not yet sent.
const subscription = observable.subscribe( // Request sent now.
  ({ value }) => console.log('token', value),
  ({ error }) => console.error('error', error),
)
subscription.unsubscribe() // Request canceled.

FAQ

Why did you name your export async?

To mimic asynchronous function syntax as closely as possible. If you don't like that style, you can easily rename it:

import { async as myFavoriteName } from '@thejohnfreeman/await-observable'
1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago