This content originally appeared on DEV Community and was authored by Navdeep Mishra
Effortless JavaScript Retries with redo.js!
Tired of handling unreliable APIs, flaky database queries, or network failures? Instead of writing complex retry logic, let redo.js handle it for you—simple, powerful, and effortless!
Why redo.js?
Works with Node.js, React, Vue, and more
Supports customizable retry strategies (exponential backoff, fixed delays, etc.)
Handles errors automatically with minimal code
Installation
- Using npm:
npm install redo.js
- Using yarn:
yarn add redo.js
Usage
Retry Synchronous Operations
import { retryOperation } from "redo.js";
retryOperation({
retryCount: 3, // Default: 3 - Number of retry attempts
retryDelay: 1000, // Default: 1000ms - Delay between retries
// incrementalDelayFactor: 2, // Optional - Exponential backoff factor
retryCallback: () => {
console.log("Retrying operation...");
throw new Error("Operation failed");
},
onErrorCallback: () => console.log("An error occurred."),
onSuccessCallback: () => console.log("Operation succeeded!"),
afterLastAttemptErrorCallback: (error) =>
console.error("Final error:", error.message),
});
Retry Asynchronous Operations
import axios from "axios";
import { retryAsyncOperation } from "redo.js";
const fetchData = async () => {
return axios.get("https://jsonplaceholder.typicode.com/posts");
};
retryAsyncOperation({
retryCount: 3,
retryDelay: 1000,
// incrementalDelayFactor: 2,
retryAsyncCallback: async () => await fetchData(),
onErrorCallback: (error, currentRetryCount) =>
console.log(`Retry #${currentRetryCount} failed: ${error.message}`),
onSuccessCallback: (response) =>
console.log("Operation succeeded with status:", response.status),
afterLastAttemptErrorCallback: (error) =>
console.error("Final error:", error.message),
});
Try redo.js today and make your async workflows resilient!
Like, share, and support!
Thank you!
This content originally appeared on DEV Community and was authored by Navdeep Mishra