1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
# Signals
The `Signals` module provides a GObject-like signal framework for native
JavaScript classes and objects.
Example usage:
```js
const Signals = imports.signals;
// Apply signal methods to a class prototype
var ExampleObject = class {
emitExampleSignal () {
this.emit('exampleSignal', 'stringArg', 42);
}
}
Signals.addSignalMethods(ExampleObject.prototype);
const obj = new ExampleObject();
// Connect to a signal
const handlerId = obj.connect('exampleSignal', (obj, stringArg, intArg) => {
// Note that `this` always refers `globalThis` in a Signals callback
});
// Disconnect a signal handler
obj.disconnect(handlerId);
```
#### Import
> Attention: This module is not available as an ECMAScript Module
The `Signals` module is available on the global `imports` object:
```js
const Signals = imports.signals;
```
### Signals.addSignalMethods(object)
Type:
* Static
Parameters:
* object (`Object`) — A JavaScript object
Applies the `Signals` convenience methods to an `Object`.
Generally, this is called on an object prototype, but may also be called on an
object instance.
### connect(name, callback)
> Warning: Unlike GObject signals, `this` within a signal callback will always
> refer to the global object (ie. `globalThis`).
Parameters:
* name (`String`) — A signal name
* callback (`Function`) — A callback function
Returns:
* (`Number`) — A handler ID
Connects a callback to a signal for an object. Pass the returned ID to
`disconnect()` to remove the handler.
If `callback` returns `true`, emission will stop and no other handlers will be
invoked.
### disconnect(id)
Parameters:
* id (`Number`) — The ID of the handler to be disconnected
Disconnects a handler for a signal.
### disconnectAll()
Disconnects all signal handlers for an object.
### emit(name, ...args)
Parameters:
* name (`String`) — A signal name
* args (`Any`) — Any number of arguments, of any type
Emits a signal for an object. Emission stops if a signal handler returns `true`.
Unlike GObject signals, it is not necessary to declare signals or define their
signature. Simply call `emit()` with whatever signal name you wish, with
whatever arguments you wish.
### signalHandlerIsConnected(id)
Parameters:
* id (`Number`) — The ID of the handler to be disconnected
Returns:
* (`Boolean`) — `true` if connected, or `false` if not
Checks if a handler ID is connected.
|