Security News
vlt Debuts New JavaScript Package Manager and Serverless Registry at NodeConf EU
vlt introduced its new package manager and a serverless registry this week, innovating in a space where npm has stagnated.
@azure/abort-controller
Advanced tools
The @azure/abort-controller npm package provides a way to use AbortController and AbortSignal, which are interfaces for abortable operations, in the Azure SDKs. These are particularly useful for cancelling asynchronous operations in JavaScript, such as network requests or long-running processes.
Creating an AbortController and AbortSignal
This feature allows you to create an instance of AbortController and retrieve its AbortSignal. The signal can then be passed to operations that support cancellation.
const { AbortController } = require('@azure/abort-controller');
const controller = new AbortController();
const signal = controller.signal;
Aborting an operation
This feature enables you to abort an operation by calling the `abort` method on the controller. Any operation listening to the associated signal will be cancelled.
controller.abort();
Listening for an abort signal
This feature allows you to listen for an abort event on the AbortSignal. This is useful for performing cleanup or rollback actions when an operation is cancelled.
signal.addEventListener('abort', () => {
console.log('Operation aborted!');
});
The 'abort-controller' package provides a similar API for creating abortable operations using AbortController and AbortSignal. It is a polyfill for the AbortController interface that works in both web browsers and Node.js environments. Compared to @azure/abort-controller, it is not specific to Azure SDKs and can be used in a wider range of applications.
The @azure/abort-controller
package provides AbortController
and AbortSignal
classes. These classes are compatible
with the AbortController built into modern browsers
and the AbortSignal
used by fetch.
Use the AbortController
class to create an instance of the AbortSignal
class that can be used to cancel an operation
in an Azure SDK that accept a parameter of type AbortSignalLike
.
Install this libray using npm as follows
npm install @azure/abort-controller
Use the AbortController
to create an AbortSignal
which can then be passed to Azure SDK operations to cancel
pending work. The AbortSignal
can be accessed via the signal
property on an instantiated AbortController
.
An AbortSignal
can also be returned directly from a static method, e.g. AbortController.timeout(100)
.
that is cancelled after 100 milliseconds.
Calling abort()
on the instantiated AbortController
invokes the registered abort
event listeners on the associated AbortSignal
.
Any subsequent calls to abort()
on the same controller will have no effect.
The AbortSignal.none
static property returns an AbortSignal
that can not be aborted.
Multiple instances of an AbortSignal
can be linked so that calling abort()
on the parent signal,
aborts all linked signals.
This linkage is one-way, meaning that a parent signal can affect a linked signal, but not the other way around.
To link AbortSignals
together, pass in the parent signals to the AbortController
constructor.
The below examples assume that doAsyncWork
is a function that takes a bag of properties, one of which is
of the abort signal.
import { AbortController } from "@azure/abort-controller";
const controller = new AbortController();
doAsyncWork({ abortSignal: controller.signal });
// at some point later
controller.abort();
import { AbortController } from "@azure/abort-controller";
const signal = AbortController.timeout(1000);
doAsyncWork({ abortSignal: signal });
import { AbortController } from "@azure/abort-controller";
const allTasksController = new AbortController();
const subTask1 = new AbortController(allTasksController.signal);
const subtask2 = new AbortController(allTasksController.signal);
allTasksController.abort(); // aborts allTasksSignal, subTask1, subTask2
subTask1.abort(); // aborts only subTask1
import { AbortController } from "@azure/abort-controller";
const allTasksController = new AbortController();
// create a subtask controller that can be aborted manually,
// or when either the parent task aborts or the timeout is reached.
const subTask = new AbortController(allTasksController.signal, AbortController.timeout(100));
allTasksController.abort(); // aborts allTasksSignal, subTask
subTask.abort(); // aborts only subTask
This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.
When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.
If you'd like to contribute to this library, please read the contributing guide to learn more about how to build and test the code.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.
FAQs
Microsoft Azure SDK for JavaScript - Aborter
The npm package @azure/abort-controller receives a total of 6,067,241 weekly downloads. As such, @azure/abort-controller popularity was classified as popular.
We found that @azure/abort-controller demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
vlt introduced its new package manager and a serverless registry this week, innovating in a space where npm has stagnated.
Security News
Research
The Socket Research Team uncovered a malicious Python package typosquatting the popular 'fabric' SSH library, silently exfiltrating AWS credentials from unsuspecting developers.
Security News
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.