1.0.2 • Published 1 year ago
goerrify v1.0.2
goerrify
- Bringing Go-style Error Handling to JavaScript
The goerrify package provides utilities to simplify error handling in JavaScript, inspired by Go's approach. It offers two functions:
errify: Asynchronously wraps a promise and returns an array containing the resolved value (if successful) ornulland the caught error (if rejected).errifyAll: Asynchronously handles a collection of promises usingPromise.allSettled, returning an array of arrays where each inner array contains the resolved value ornulland the corresponding error (if any).
Installation
npm install goerrifyUsage
CommonJS
const { errify, errifyAll } = require('goerrify');
async function fetchData() {
try {
const response = await fetch('https://api.example.com/data');
return await response.json();
} catch (err) {
return null;
}
}
async function main() {
const [data, err] = await errify(fetchData());
if (err) {
console.error('Error fetching data:', err);
return;
}
console.log('Fetched data:', data);
// Using errifyAll for multiple promises
const promises = [fetchData(), anotherPromise(), ...];
const results = await errifyAll(promises);
results.forEach(([result, error]) => {
if (error) {
console.error('Error in promise:', error);
} else {
console.log('Result:', result);
}
});
}
main();Modules (ES6+)
import { errify, errifyAll } from 'goerrify';
async function fetchData() {
try {
const response = await fetch('https://api.example.com/data');
return await response.json();
} catch (err) {
return null;
}
}
async function main() {
const [data, err] = await errify(fetchData());
if (err) {
console.error('Error fetching data:', err);
return;
}
console.log('Fetched data:', data);
// Using errifyAll for multiple promises
const promises = [fetchData(), anotherPromise(), ...];
const results = await errifyAll(promises);
results.forEach(([result, error]) => {
if (error) {
console.error('Error in promise:', error);
} else {
console.log('Result:', result);
}
});
}
main();Key Points
errifyprovides a concise way to handle individual promises, returning both the result and any encountered error in a single array.errifyAllis useful for managing collections of promises, allowing you to efficiently process their outputs and errors in a single loop.
Benefits of goerrify
- Improves code readability and maintainability by promoting a consistent error handling pattern.
- Simplifies promise handling by avoiding nested
try...catchblocks. - Provides a familiar approach for developers coming from Go or similar languages.
Additional Considerations
- While
goerrifysimplifies common error handling patterns, complex scenarios might still require more elaborate error management strategies. - Consider using a library like
bluebirdfor advanced promise handling features.
License MIT