Отмените подписку на конкретную подписку с помощью Deezer Javascript SDK DZ.Event.unsubscribe

В Deezer Javascript SDK DZ.Event.unsubscribe Метод можно использовать для отмены подписки на все подписки на определенное событие, но есть ли способ отменить подписку на определенную подписку вместо всех?

DZ.Event.subscribe Метод не возвращает никакого идентификатора, который может быть задан в вызове отмены подписки, и отправка функции обратного вызова подписки в метод отмены подписки также не работает:

function callback(args) {
  console.log('GOT player_position 1', args);
}
DZ.Event.subscribe('player_position', callback);
DZ.Event.subscribe('player_position', args => {
  console.log('GOT player_position 2', args);
});
DZ.Event.unsubscribe('player_position', callback); // Unsubscribes both subscriptions

1 ответ

Решение

В настоящее время есть только неприятные способы сделать это с доступом к DZ.Event.callbacks

Например, вы можете:

//declare your own unsubscribe function
var unsubscribe = (event, callback) => {
    if(DZ.Event.callbacks[event]) {
        let index = DZ.Event.callbacks[event].indexOf(callback); //find the index of your callback
        if(index !== -1) {
            DZ.Event.callbacks[event].splice(index, 1); //remove it
        }
    }
} 
Другие вопросы по тегам