Canceling Asynchronous Operations
Learn how to cancel asynchronous operations on a single-threaded platform.
We'll cover the following
Being able to stop a long-running operation is particularly useful if the operation has been canceled by the user or if it has become redundant. In multithreaded programming, we can just terminate the thread, but on a single-threaded platform such as Node.js, things can get a little bit more complicated.
Note: In this section, we’ll be talking about canceling asynchronous operations and not about canceling promises, which is a different matter altogether. By the way, the Promises/A+ standard doesn’t include an API for canceling promises. However, we can use a third-party promise library such as bluebird if we need such a feature. Note that canceling a promise doesn’t mean that the operation the promise refers to will also be canceled. In fact, bluebird offers an
onCancel
callback in the promise constructor, in addition toresolve
andreject
, which can be used to cancel the underlying async operation when the promise is canceled. This is actually what this section is about.
A basic recipe for creating cancelable functions
Actually, in asynchronous programming, the basic principle for canceling the execution of a function is very simple: we check if the operation has been canceled after every asynchronous call, and if that’s the case, we prematurely quit the operation. Consider, for example, the following code:
Get hands-on with 1400+ tech skills courses.