aa-coordination-resource
Dominic Gannaway 2 years ago
parent 31783b85e0
commit 5c0749fdf3

@ -181,7 +181,7 @@ export function build_component(node, component_name, context, anchor = context.
n.type === 'ExpressionTag' &&
n.expression.type !== 'Identifier' &&
(n.expression.type !== 'MemberExpression' ||
n.expression.object.type !== 'ArrayExpression')
n.expression.object.type === 'AwaitExpression')
);
});

@ -63,19 +63,35 @@ export class Resource {
var value = get(this.#current);
if (value === UNINITIALIZED) {
return this.#fn.v;
throw new Error('Resource is not yet resolved, ensure it is awaited');
}
return value;
}
get latest() {
var promise = get(this.#fn);
var value = get(this.#current);
get(this.#pending);
if (!this.#pending.v) {
return this.#current.v;
if (value === UNINITIALIZED) {
throw new Error('Resource is not yet resolved, ensure it is awaited');
}
return promise;
return value;
}
/**
* @param {(arg0: { readonly current: T; readonly pending: boolean; readonly latest: T; }) => void} onfulfilled
* @param {((reason: any) => PromiseLike<never>) | null | undefined} onrejected
*/
then(onfulfilled, onrejected) {
return get(this.#fn).then(() => {
var self = this;
onfulfilled({
get current() { return self.current },
get pending() { return self.pending },
get latest() { return self.latest }
});
}, onrejected);
}
}

Loading…
Cancel
Save