1

我有 4 个文件:

当我登录和注销时, AuthenticationUtil.js会触发一个事件。然后,它调用每个 authStatusListeners 的函数:

const authUtilEmitter = new EventEmitter.EventEmitter2({
    wildcard: true,
    delimiter: '::',
    maxListeners: 0
});

// METHODS
function emitLoginEvent(userData, oAuthConfig) {
    userData.user_name = userData[oAuthConfig.usernameProperty];
    const authData = {
        isLoggedIn: true,
        userData: userData
    };
    _emitLoginStateChangeEvent(authData);
}

function emitLogoutEvent(evtData) {
    const authData = {
        isLoggedIn: false,
        userData: null,
        evtData
    };
    loginResult = q.defer();
    loginResult.reject();
    _emitLoginStateChangeEvent(authData);
}

function _emitLoginStateChangeEvent(authData) {
    authUtilEmitter.emit('loginState::change', authData);
    authStatusListeners.forEach(listener => listener(authData));
}

我有一个 Service AuthenticationService.js来注册监听器:

function addLoginStateChangeListener(listener) {
    authStatusListeners.push(listener);
}

我有文件OAuthUtil.js,我需要在其中监听事件:

function getAuthorizeUrl() {
  AuthenticationService(oAuthConfig).addLoginStateChangeListener((authData) => {
        console.log('Good work!');
  });
}

当我登录时,我能够在控制台中打印出消息。问题是当我注销时,'loginState::change' 被触发,注销被执行并且我输入了 getAuthorizeUrl 但我无法监听事件。

4

0 回答 0