Simplifying promises

This commit is contained in:
David Négrier 2021-07-21 18:21:12 +02:00
parent 3cfb74be54
commit 1bb6d893e0
2 changed files with 27 additions and 42 deletions

View file

@ -436,18 +436,10 @@ export class GameRoom {
private getVariableManager(): Promise<VariablesManager> { private getVariableManager(): Promise<VariablesManager> {
if (!this.variableManagerPromise) { if (!this.variableManagerPromise) {
this.variableManagerPromise = new Promise<VariablesManager>((resolve, reject) => { this.variableManagerPromise = this.getMap()
this.getMap()
.then((map) => { .then((map) => {
const variablesManager = new VariablesManager(this.roomUrl, map); const variablesManager = new VariablesManager(this.roomUrl, map);
variablesManager return variablesManager.init();
.init()
.then(() => {
resolve(variablesManager);
})
.catch((e) => {
reject(e);
});
}) })
.catch((e) => { .catch((e) => {
if (e instanceof LocalUrlError) { if (e instanceof LocalUrlError) {
@ -465,19 +457,11 @@ export class GameRoom {
}, 1000); }, 1000);
const variablesManager = new VariablesManager(this.roomUrl, null); const variablesManager = new VariablesManager(this.roomUrl, null);
variablesManager return variablesManager.init();
.init()
.then(() => {
resolve(variablesManager);
})
.catch((e) => {
reject(e);
});
} else { } else {
reject(e); throw e;
} }
}); });
});
} }
return this.variableManagerPromise; return this.variableManagerPromise;
} }

View file

@ -45,14 +45,15 @@ export class VariablesManager {
/** /**
* Let's load data from the Redis backend. * Let's load data from the Redis backend.
*/ */
public async init(): Promise<void> { public async init(): Promise<VariablesManager> {
if (!this.shouldPersist()) { if (!this.shouldPersist()) {
return; return this;
} }
const variables = await variablesRepository.loadVariables(this.roomUrl); const variables = await variablesRepository.loadVariables(this.roomUrl);
for (const key in variables) { for (const key in variables) {
this._variables.set(key, variables[key]); this._variables.set(key, variables[key]);
} }
return this;
} }
/** /**