1.0.5 • Published 8 years ago

asink v1.0.5

Weekly downloads
4
License
BSD
Repository
github
Last release
8 years ago

asink

Like async/await, but asink/yield. A placeholder until async/await are standardized and included in node.js and web browsers. "asink" is exactly the same thing as "spawn", but with a slightly better name.

How To Use

Without asink, you might write an asynchronous function like this:

function myfunc () {
  return thingThatReturnsAPromise().then(() => {
    // do something else
    return aPromise1
  }).then(() => {
    // do yet another thing
    return aPromise2
  })
}

But with asink, you can write this code like this:

function myfunc () {
  return asink(function * () {
    yield thingThatReturnsAPromise()
    // do something else
    yield aPromise1
    // do yet another thing
    return aPromise2
  })
}

Code written with asink looks nicer and is easier to write and understand than without it. It is especially nice when there is a lot of logic with promises, or when there are errors that go inside try/catch blocks. It is almost the same as the async/await pattern of the upcoming version of javascript, ES7, but works today in node.js and (most modern) web browsers.

The same code written in the as-yet-unworking-and-unstandardized-es7 is:

async function myfunc () {
  await thingThatReturnsAPromise()
  // do something else
  await aPromise1
  // do yet another thing
  return aPromise2
}

asink lets you have most of the readability and writability gains in a form that works today without waiting for ES7. It is also maximally forwards-compatible in the sense that when async/await is actually available, a straightforward conversion of each asink function to the async/await pattern is possible by making each function async, removing the "return asink" line and corresponding closing brace and parenthesis, and making each yield an await.

1.0.5

8 years ago

1.0.4

8 years ago

1.0.3

8 years ago

1.0.2

8 years ago

1.0.1

8 years ago

1.0.0

8 years ago