1.4.2 • Published 3 years ago
@avocode/cancel-token v1.4.2
cancellation
A method for making async operations cancellable
Installation
Component:
$ component install ForbesLindesay/cancellation
NPM:
$ npm install cancellation
API
tokenSource()
Returns a new CancellationTokenSource:
var tokenSource = require('cancellation');
var source = tokenSource();
callAsyncOperation(arg1, arg2, arg3, source.token);
setTimeout(function () {
source.cancel('Operation timed out');
}, 1000);
tokenSource.empty
Returns an 'empty' CancellationToken (one that will never be cancelled).
var tokenSource = require('cancellation');
function asyncOperation(arg1, arg2, arg3, cancellationToken) {
cancellationToken = cancellationToken || tokenSource.empty;
//Continue with function knowing there is a cancellation token
}
CancellationToken.isCancelled()
Returns true if the token has been cancelled:
//In ES6
function asyncOperation(cancellationToken) {
return spawn(function* () {
while(!cancellationToken.isCancelled()) {
yield NextAsyncOp();
}
})
}
CancellationToken.throwIfCancelled()
Throws the rejection reason if the token has been cancelled:
//In ES6
function asyncOperation(cancellationToken) {
return spawn(function* () {
while(true) {
cancellationToken.throwIfCancelled()
yield NextAsyncOp();
}
})
}
CancellationToken.onCancelled(cb)
Calls cb when the cancellation token is cancelled (this is probably currently the most useful of these methods).
function get(url, cancellationToken) {
var def = defer();
var req = request(url, function (err, res) {
if (err) def.reject(err);
else def.resolve(res);
});
cancellationToken
.onCancelled(function (reason) {
def.reject(reason);
req.abort();
});
return def.promise;
}
License
MIT
1.4.2
3 years ago
1.4.1
3 years ago
1.4.0
3 years ago
1.4.0-rc.14
3 years ago
1.4.0-rc.13
3 years ago
1.4.0-rc.12
3 years ago
1.4.0-rc.11
3 years ago
1.4.0-rc.10
3 years ago
1.4.0-rc.9
3 years ago
1.4.0-rc.8
3 years ago
1.4.0-rc.7
3 years ago
1.4.0-rc.6
3 years ago
1.4.0-rc.5
3 years ago
1.4.0-rc.4
3 years ago
1.4.0-rc.3
3 years ago
1.4.0-rc.2
3 years ago
1.4.0-rc
3 years ago
1.3.1
5 years ago
1.3.0
6 years ago
1.2.1
6 years ago
1.2.0
6 years ago
1.1.0
7 years ago