rx.disposables
Version:
Library for Disposables which can be used independently from RxJS
149 lines (91 loc) • 3.61 kB
Markdown
# `SingleAssignmentDisposable` class #
Represents a disposable resource which only allows a single assignment of its underlying disposable resource. If an underlying disposable resource has already been set, future attempts to set the underlying disposable resource will throw an Error.
## Usage ##
The follow example shows the basic usage of a `SingleAssignmentDisposable`.
```js
const singleDisposable = new SingleAssignmentDisposable();
const disposable = Disposable.create(() => console.log('disposed'));
singleDisposable.setDisposable(disposable);
singleDisposable.dispose();
// => disposed
```
## `SingleAssignmentDisposable Constructor` ##
- [`constructor`](#singleassignmentdisposable)
## `SingleAssignmentDisposable Instance Methods` ##
- [`dispose`](#singleassignmentdisposableprototypedispose)
- [`getDisposable`](#singleassignmentdisposableprototypegetdisposable)
- [`setDisposable`](#singleassignmentdisposableprototypesetdisposable)
## `SingleAssignmentDisposable Instance Properties` ##
- [`isDisposed`](#isdisposed)
## _SingleAssignmentDisposable Constructor_ ##
### <a id="singleassignmentdisposable"></a>`SingleAssignmentDisposable()`
Initializes a new instance of the `SingleAssignmentDisposable` class.
#### Example
```js
const singleDisposable = new SingleAssignmentDisposable();
console.log(singleDisposable.isDisposed);
// => false
```
* * *
## _SingleAssignmentDisposable Instance Methods_ ##
### <a id="singleassignmentdisposableprototypedispose"></a>`SingleAssignmentDisposable.prototype.dispose()`
Disposes the underlying disposable.
#### Example
```js
const singleDisposable = new SingleAssignmentDisposable();
const disposable = Disposable.create(() => console.log('disposed'));
singleDisposable.setDisposable(disposable);
console.log(singleDisposable.isDisposed);
// => false
singleDisposable.dispose();
// => disposed
console.log(singleDisposable.isDisposed);
// => true
```
* * *
### <a id="singleassignmentdisposableprototypegetdisposable"></a>`SingleAssignmentDisposable.prototype.getDisposable()`
Gets the underlying disposable. After disposal, the result of getting this method is undefined.
#### Returns
`Disposable` - The underlying disposable.
#### Example
```js
const singleDisposable = new SingleAssignmentDisposable();
const disposable = Disposable.create(() => console.log('disposed'));
singleDisposable.setDisposable(disposable);
console.log(singleDisposable.getDisposable() === disposable);
```
* * *
### <a id="singleassignmentdisposableprototypesetdisposablevalue"></a>`SingleAssignmentDisposable.prototype.setDisposable(value)`
Sets the underlying disposable.
#### Arguments
1. `value`: `Disposable`: The new underlying disposable.
#### Example
```js
const singleDisposable = new SingleAssignmentDisposable();
const d1 = Disposable.create(() => console.log('one'));
singleDisposable.setDisposable(d1);
const d2 = Disposable.create(() => console.log('two'));
try {
singleDisposable.setDisposable(d2);
} catch (e) {
console.log(e.message);
}
// => Disposable has already been assigned
```
* * *
## _SingleAssignmentDisposable Instance Properties_ ##
### <a id="isdisposed"></a>`isDisposed`
Gets a value that indicates whether the object is disposed.
#### Example
```js
const singleDisposable = new SingleAssignmentDisposable();
const disposable = Disposable.create(() => console.log('disposed'));
singleDisposable.setDisposable(disposable);
console.log(singleDisposable.isDisposed);
// => false
singleDisposable.dispose();
// => disposed
console.log(singleDisposable.isDisposed);
// => true
```
* * *