Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

81 строка
1.9 KiB

  1. 'use strict';
  2. exports.__esModule = true;
  3. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  4. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
  5. var _isDisposable = require('./isDisposable');
  6. var _isDisposable2 = _interopRequireDefault(_isDisposable);
  7. var SerialDisposable = (function () {
  8. function SerialDisposable() {
  9. _classCallCheck(this, SerialDisposable);
  10. this.isDisposed = false;
  11. this.current = null;
  12. }
  13. /**
  14. * Gets the underlying disposable.
  15. * @return The underlying disposable.
  16. */
  17. SerialDisposable.prototype.getDisposable = function getDisposable() {
  18. return this.current;
  19. };
  20. /**
  21. * Sets the underlying disposable.
  22. * @param {Disposable} value The new underlying disposable.
  23. */
  24. SerialDisposable.prototype.setDisposable = function setDisposable() {
  25. var value = arguments.length <= 0 || arguments[0] === undefined ? null : arguments[0];
  26. if (value != null && !_isDisposable2['default'](value)) {
  27. throw new Error('Expected either an empty value or a valid disposable');
  28. }
  29. var isDisposed = this.isDisposed;
  30. var previous = undefined;
  31. if (!isDisposed) {
  32. previous = this.current;
  33. this.current = value;
  34. }
  35. if (previous) {
  36. previous.dispose();
  37. }
  38. if (isDisposed && value) {
  39. value.dispose();
  40. }
  41. };
  42. /**
  43. * Disposes the underlying disposable as well as all future replacements.
  44. */
  45. SerialDisposable.prototype.dispose = function dispose() {
  46. if (this.isDisposed) {
  47. return;
  48. }
  49. this.isDisposed = true;
  50. var previous = this.current;
  51. this.current = null;
  52. if (previous) {
  53. previous.dispose();
  54. }
  55. };
  56. return SerialDisposable;
  57. })();
  58. exports['default'] = SerialDisposable;
  59. module.exports = exports['default'];