What if JavaScript could chill a little bit with all the errors being thrown here and there?
function parse(raw) {
try {
return [ null, JSON.parse(raw) ]
} catch (err) {
return [ err, null ]
}
}
let [ err, ok ] = parse(...)
Nullable | try..catch and throw | Callback | Promise | chilled | |
---|---|---|---|---|---|
Sync | ✔️ | ✔️ | ✔️ | ||
Async | ✔️ | ✔️ | ✔️ | ||
Error Context | 😕 | ✔️ | ✔️ | ✔️ | |
Composability | ✔️ | ✔️ | ✔️ |
Helps to capture the error close to the context when working with functions which throw exceptions.
const parse = chill(JSON.parse)
let [ err, ok ] = parse('{ "id": 1 }')
if (err) {
// Handle the error.
}
console.log(ok)
Removes exception bubbling when using Async Await.
const url = 'https://jsonplaceholder.typicode.com/todos/1'
async function () {
let [ err, ok ] = await chill(
() => fetch(url).then(response => response.json())
)()
if (err) {
// Handle the error.
}
// Celebrate the success at async programming!
console.log(ok)
}()
- Error handling and Go
- Result type from Elm
- Data.Either type from Haskell
- scopsy/await-to-js a JavaScript library exploring a similar concept