Skip to content

Commit 5c0749f

Browse files
committed
fix
1 parent 31783b8 commit 5c0749f

File tree

2 files changed

+22
-6
lines changed

2 files changed

+22
-6
lines changed

packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/component.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ export function build_component(node, component_name, context, anchor = context.
181181
n.type === 'ExpressionTag' &&
182182
n.expression.type !== 'Identifier' &&
183183
(n.expression.type !== 'MemberExpression' ||
184-
n.expression.object.type !== 'ArrayExpression')
184+
n.expression.object.type === 'AwaitExpression')
185185
);
186186
});
187187

packages/svelte/src/internal/client/reactivity/resources.js

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,19 +63,35 @@ export class Resource {
6363
var value = get(this.#current);
6464

6565
if (value === UNINITIALIZED) {
66-
return this.#fn.v;
66+
throw new Error('Resource is not yet resolved, ensure it is awaited');
6767
}
6868

6969
return value;
7070
}
7171

7272
get latest() {
73-
var promise = get(this.#fn);
73+
var value = get(this.#current);
74+
get(this.#pending);
7475

75-
if (!this.#pending.v) {
76-
return this.#current.v;
76+
if (value === UNINITIALIZED) {
77+
throw new Error('Resource is not yet resolved, ensure it is awaited');
7778
}
7879

79-
return promise;
80+
return value;
81+
}
82+
83+
/**
84+
* @param {(arg0: { readonly current: T; readonly pending: boolean; readonly latest: T; }) => void} onfulfilled
85+
* @param {((reason: any) => PromiseLike<never>) | null | undefined} onrejected
86+
*/
87+
then(onfulfilled, onrejected) {
88+
return get(this.#fn).then(() => {
89+
var self = this;
90+
onfulfilled({
91+
get current() { return self.current },
92+
get pending() { return self.pending },
93+
get latest() { return self.latest }
94+
});
95+
}, onrejected);
8096
}
8197
}

0 commit comments

Comments
 (0)