aboutsummaryrefslogtreecommitdiff
path: root/common/once.js
diff options
context:
space:
mode:
Diffstat (limited to 'common/once.js')
-rw-r--r--common/once.js50
1 files changed, 25 insertions, 25 deletions
diff --git a/common/once.js b/common/once.js
index d56b3c8..e3e6dbe 100644
--- a/common/once.js
+++ b/common/once.js
@@ -5,37 +5,37 @@
* Redistribution terms are gathered in the `copyright' file.
*/
-"use strict";
-
/*
* This module provides an easy way to wrap an async function into a promise
* so that it only gets executed once.
*/
-(() => {
- async function assign_result(state, result_producer)
- {
- state.result = await result_producer();
- state.ready = true;
- for (let cb of state.waiting)
- setTimeout(cb, 0, state.result);
- state.waiting = undefined;
- }
+async function assign_result(state, result_producer)
+{
+ state.result = await result_producer();
+ state.ready = true;
+ for (let cb of state.waiting)
+ setTimeout(cb, 0, state.result);
+ state.waiting = undefined;
+}
- async function get_result(state)
- {
- if (state.ready)
- return state.result;
+async function get_result(state)
+{
+ if (state.ready)
+ return state.result;
- return new Promise((resolve, reject) => state.waiting.push(resolve));
- }
+ return new Promise((resolve, reject) => state.waiting.push(resolve));
+}
- function make_once(result_producer)
- {
- let state = {waiting : [], ready : false, result : undefined};
- assign_result(state, result_producer);
- return () => get_result(state);
- }
+function make_once(result_producer)
+{
+ let state = {waiting : [], ready : false, result : undefined};
+ assign_result(state, result_producer);
+ return () => get_result(state);
+}
- window.make_once = make_once;
-})();
+/*
+ * EXPORTS_START
+ * EXPORT make_once
+ * EXPORTS_END
+ */