Возможно, это будет делать то, что вы хотите
Когда пользователь «повторно подключает» соединение, для установления нового соединения добавляется второй close
слушатель - так как этот слушатель добавляется после того, который устанавливает this.connection = null
, он будет вызываться после этого запущен, поэтому нет шансов на состояние гонки
const makeConnection = () => {
this.connection = new WebSocket(serverSocketURL);
// Other logic codes here
this.connection.addEventListener('close', () => {
this.connection = null
});
};
if (this.connection) {
this.connection.addEventListener('close', makeConnection);
this.connection.close();
} else {
makeConnection();
}
или - используя onclose
вместо addEventListener('close',
const makeConnection = () => {
this.connection = new WebSocket(serverSocketURL);
// Other logic codes here
this.connection.onclose = () => {
this.connection = null
};
};
if (this.connection) {
this.connection.onclose = makeConnection;
this.connection.close();
} else {
makeConnection();
}