Sometimes, we want to time out a promise if failed to complete in time with Node.js.
In this article, we’ll look at how to time out a promise if failed to complete in time with Node.js.
How to time out a promise if failed to complete in time with Node.js?
To time out a promise if failed to complete in time with Node.js, we can use the Promise.race method.
For instance, we write
const withTimeout = (millis, promise) => {
const timeout = new Promise((resolve, reject) =>
setTimeout(
() => reject(`Timed out after ${millis} ms.`),
millis));
return Promise.race([
promise,
timeout
]);
}
to define the withTimeout function that calls Promise.race with the promise and the timeout promise.
Promise.race returns the promise that’s settled the earliest so if timeout is settled before promise, it’ll be returned.
Then we can use withTimeout in an async function by writing
await withTimeout(5000, doSomethingAsync());
where doSomethingAsync is an async function.
Conclusion
To time out a promise if failed to complete in time with Node.js, we can use the Promise.race method.