0

I have created a js script, that subscribes to two different events:

function testDoubleEvents() {
    alert("started");
    var eventName1 = "LeftBumperPressed";
    var eventName2 = "RightBumperPressed";

    session.service("ALMemory").done(function (ALMemory) {
        alert("ALMemory ok");
        ALMemory.subscriber(eventName1).done(function(subscriber1) {
            alert("subscribed1");
            subscriber1.signal.connect(function(result1){
                alert(eventName1);
            });
        });

        ALMemory.subscriber(eventName2).done(function(subscriber2) {
            alert("subscribed2");
            subscriber2.signal.connect(function(result2){
                alert(eventName2);
            });
        });

    });
}
  1. How can I unsubscribe from an event when this event occurs for first time?
  2. How can I unsubscribe from both of the events when one of the occurs for first time?
stefan.stt
  • 2,357
  • 5
  • 24
  • 47

2 Answers2

2

Would this suffice?

alert("subscribed1");
        subscriber1.signal.connect(function(result1){
            alert(eventName1);
            subscriber1.signal.disconnect()
        });

http://doc.aldebaran.com/2-5/dev/js/index.html?highlight=javascript#signals

Anders_K
  • 982
  • 9
  • 28
2

you need to call disconnect with the connection id, but you need to keep a reference to all those subscribers and connections. Here, eventName1 will be disconnected the first time it occurs, while eventName2 disconnects both.

function testDoubleEvents() {
    alert("started");
    var eventName1 = "LeftBumperPressed";
    var eventName2 = "RightBumperPressed";
    var subscriber1 = 0;
    var subscriber2 = 0;
    var connectionId1 = 0;
    var connectionId2 = 0;

    session.service("ALMemory").done(function (ALMemory) {
        alert("ALMemory ok");
        ALMemory.subscriber(eventName1).done(function(subscriber) {
            subscriber1 = subscriber;
            alert("subscribed1");
            subscriber1.signal.connect(function(result1){
                alert(eventName1);
                subscriber1.signal.disconnect(connectionId1);
            }).then(function(connection) { 
                connectionId1 = connection; 
            });
        });

        ALMemory.subscriber(eventName2).done(function(subscriber) {
            alert("subscribed2");
            subscriber2 = subscriber;
            subscriber2.signal.connect(function(result2){
                alert(eventName2);
                subscriber2.signal.disconnect(connectionId2);
                subscriber1.signal.disconnect(connectionId1);
            }).then(function(connection) { 
                connectionId2 = connection; 
            });
        });

    });
}

For the record, documentation is here: http://doc.aldebaran.com/2-5/dev/js/index.html

JLS
  • 968
  • 5
  • 12