diff options
| author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2020-01-24 22:02:53 -0500 | 
|---|---|---|
| committer | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2020-01-24 22:02:53 -0500 | 
| commit | d7ce82910745bc1d7661a5d19b89437025d2e32f (patch) | |
| tree | 7ab84ee04a8d436d9a8c57760942967bef4cd729 | |
| parent | 632765a3b5b101f4533eb0fd280f5e6d68a091c9 (diff) | |
Use Map for Mecab.listeners
| -rw-r--r-- | ext/bg/js/mecab.js | 23 | 
1 files changed, 12 insertions, 11 deletions
| diff --git a/ext/bg/js/mecab.js b/ext/bg/js/mecab.js index 8bcbb91c..34ecd728 100644 --- a/ext/bg/js/mecab.js +++ b/ext/bg/js/mecab.js @@ -20,7 +20,7 @@  class Mecab {      constructor() {          this.port = null; -        this.listeners = {}; +        this.listeners = new Map();          this.sequence = 0;      } @@ -55,17 +55,18 @@ class Mecab {          if (this.port === null) { return; }          this.port.disconnect();          this.port = null; -        this.listeners = {}; +        this.listeners.clear();          this.sequence = 0;      }      onNativeMessage({sequence, data}) { -        if (hasOwn(this.listeners, sequence)) { -            const {callback, timer} = this.listeners[sequence]; -            clearTimeout(timer); -            callback(data); -            delete this.listeners[sequence]; -        } +        const listener = this.listeners.get(sequence); +        if (typeof listener === 'undefined') { return; } + +        const {callback, timer} = listener; +        clearTimeout(timer); +        callback(data); +        this.listeners.delete(sequence);      }      invoke(action, params) { @@ -75,13 +76,13 @@ class Mecab {          return new Promise((resolve, reject) => {              const sequence = this.sequence++; -            this.listeners[sequence] = { +            this.listeners.set(sequence, {                  callback: resolve,                  timer: setTimeout(() => { -                    delete this.listeners[sequence]; +                    this.listeners.delete(sequence);                      reject(new Error(`Mecab invoke timed out in ${Mecab.timeout} ms`));                  }, Mecab.timeout) -            }; +            });              this.port.postMessage({action, params, sequence});          }); |