@articulate/asyncios

A wrapper for promise-based library Axios into a crocks Async

Usage no npm install needed!

<script type="module">
  import articulateAsyncios from 'https://cdn.skypack.dev/@articulate/asyncios';
</script>

README

asyncios

A crocks Async wrapper for axios. Allows consumers to take advantage of the "lazy" data type while keeping a familiar API.

How to Use

asyncios accepts the same configuration arguments as the underlying axios function. See the axios documentation for more details.

// GET request
asyncios({ method: 'GET', url: '/user?ID=12345' })
  .fork(
    error => console.log(error),
    response => console.log(response)
  )
// same GET request, but using `params` configuration
asyncios({ method: 'GET', url: '/user', params: { ID: 12345 } })
  .fork(
    error => console.log(error),
    response => console.log(response)
  )
// POST request
asyncios({
  method: 'POST',
  url: '/user?ID=12345',
  data: { firstName: 'Fred', lastName: 'Flinstone' },
})
  .fork(
    error => console.log(error),
    response => console.log(response)
  )

Cancellation

Async-style cancellation is supported. See the crocks doucmentation for more details.

const cancel = asyncios({ method: 'GET', url: '/user?ID=12345' })
  .fork(
    error => console.log(error),
    response => console.log(response),
    () => console.log('cancelled!')
  )

cancel()

axios's cancellation token is also supported. Take note of the different behaviors--while cancelling via crocks will invoke fork's third "cancel" callback, cancelling via axios will invoke fork's first "rejected" callback. See axios's documentation for more details.

const source = axios.CancelToken.source()

asyncios({
  method: 'GET',
  url: '/user?ID=12345',
  cancelToken: source.token
})
  .fork(
    error => {
      if (axios.isCancel(error)) console.log(error.message)
      else { /* handle error */ }
    },
    response => console.log(response)
  )

source.cancel('My cancel message')

Thanks

Thanks to the fine people who work on both axios & crocks.

The Name

Pretty sure is spencerfdavis's fault.