Use Map for audioGetFromSources's cache parameter

This commit is contained in:
toasted-nutbread 2020-02-13 20:26:48 -05:00
parent 0e6b75438a
commit 75fbb1565c
2 changed files with 7 additions and 4 deletions

View File

@ -114,8 +114,11 @@ function audioGetFromUrl(url, willDownload) {
async function audioGetFromSources(expression, sources, optionsContext, willDownload, cache=null) { async function audioGetFromSources(expression, sources, optionsContext, willDownload, cache=null) {
const key = `${expression.expression}:${expression.reading}`; const key = `${expression.expression}:${expression.reading}`;
if (cache !== null && hasOwn(cache, expression)) { if (cache !== null) {
return cache[key]; const cacheValue = cache.get(expression);
if (typeof cacheValue !== 'undefined') {
return cacheValue;
}
} }
for (let i = 0, ii = sources.length; i < ii; ++i) { for (let i = 0, ii = sources.length; i < ii; ++i) {
@ -133,7 +136,7 @@ async function audioGetFromSources(expression, sources, optionsContext, willDown
} }
const result = {audio, url, source}; const result = {audio, url, source};
if (cache !== null) { if (cache !== null) {
cache[key] = result; cache.set(key, result);
} }
return result; return result;
} catch (e) { } catch (e) {

View File

@ -32,7 +32,7 @@ class Display {
this.index = 0; this.index = 0;
this.audioPlaying = null; this.audioPlaying = null;
this.audioFallback = null; this.audioFallback = null;
this.audioCache = {}; this.audioCache = new Map();
this.styleNode = null; this.styleNode = null;
this.eventListeners = []; this.eventListeners = [];