aboutsummaryrefslogtreecommitdiff
path: root/ext/bg
diff options
context:
space:
mode:
authortoasted-nutbread <toasted-nutbread@users.noreply.github.com>2020-01-24 22:02:53 -0500
committertoasted-nutbread <toasted-nutbread@users.noreply.github.com>2020-01-24 22:02:53 -0500
commitd7ce82910745bc1d7661a5d19b89437025d2e32f (patch)
tree7ab84ee04a8d436d9a8c57760942967bef4cd729 /ext/bg
parent632765a3b5b101f4533eb0fd280f5e6d68a091c9 (diff)
Use Map for Mecab.listeners
Diffstat (limited to 'ext/bg')
-rw-r--r--ext/bg/js/mecab.js23
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});
});