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.type === 'ExpressionTag' &&
n.expression.type !== 'Identifier' && n.expression.type !== 'Identifier' &&
(n.expression.type !== 'MemberExpression' || (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); var value = get(this.#current);
if (value === UNINITIALIZED) { if (value === UNINITIALIZED) {
return this.#fn.v; throw new Error('Resource is not yet resolved, ensure it is awaited');
} }
return value; return value;
} }
get latest() { get latest() {
var promise = get(this.#fn); var value = get(this.#current);
get(this.#pending);
if (!this.#pending.v) { if (value === UNINITIALIZED) {
return this.#current.v; 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