From 261548ff184926567a623e90df7954aeef842d59 Mon Sep 17 00:00:00 2001 From: Wojtek Kosior Date: Wed, 30 Jun 2021 12:28:05 +0200 Subject: emply an sh-based build system; make some changes to blocking --- common/once.js | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) (limited to 'common/once.js') 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 + */ -- cgit v1.2.3