NodeJS Program to Retry With Backoff with Explanation
NodeJS
Hard
Async & Event Loop
43 views
1 min read
82 words
This problem helps you practice core NodeJS fundamentals in a practical way. It builds intuition around retry, async, delay. Let’s break it down step by step so you can implement it confidently.
Problem Statement
Retry a failing async function 3 times with small delays.
Input Format
No input.
Output Format
Print attempt count.
Constraints
Use async loop with await delay.
Code Solution
This explanation is written for learning purposes and to help beginners understand the concept clearly.
function sleep(ms) {
return new Promise((r) => setTimeout(r, ms));
}
let attempts = 0;
async function job() {
attempts += 1;
throw new Error('fail');
}
(async () => {
for (let i = 0; i < 3; i++) {
try {
await job();
break;
} catch (e) {
if (i < 2) await sleep(20 * (i + 1));
}
}
console.log(attempts);
})();
Output Example
No sample I/O is provided for this question.
Common Mistakes
- Misreading input/output format.
- Not handling constraints and edge cases.
- Off-by-one errors in loops.
- Forgetting to reset variables between test cases (if any).
Solution Guide
Problem
Retry a failing async function 3 times with small delays.
Input / Output
Output
Print attempt count.
Constraints
Use async loop with await delay.
Details
Common Mistakes
- Misreading input/output format.
- Not handling constraints and edge cases.
- Off-by-one errors in loops.
- Forgetting to reset variables between test cases (if any).
Official Solution
function sleep(ms) {
return new Promise((r) => setTimeout(r, ms));
}
let attempts = 0;
async function job() {
attempts += 1;
throw new Error('fail');
}
(async () => {
for (let i = 0; i < 3; i++) {
try {
await job();
break;
} catch (e) {
if (i < 2) await sleep(20 * (i + 1));
}
}
console.log(attempts);
})();
Solutions (0)
No solutions submitted yet. Be the first!