1.4.2 • Published 3 years ago

@avocode/cancel-token v1.4.2

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

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