UNPKG

712 BJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.once = once;
7var _async = require("./async");
8function once(fn) {
9 let result;
10 let resultP;
11 return function* () {
12 if (result) return result;
13 if (!(yield* (0, _async.isAsync)())) return result = yield* fn();
14 if (resultP) return yield* (0, _async.waitFor)(resultP);
15 let resolve, reject;
16 resultP = new Promise((res, rej) => {
17 resolve = res;
18 reject = rej;
19 });
20 try {
21 result = yield* fn();
22 resultP = null;
23 resolve(result);
24 return result;
25 } catch (error) {
26 reject(error);
27 throw error;
28 }
29 };
30}
310 && 0;
32
33//# sourceMappingURL=functional.js.map