我有 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 但我无法监听事件。