Skip to content

Commit cf9e3d7

Browse files
authored
Update tw-lazy-scratch-blocks.js
1 parent e5fc533 commit cf9e3d7

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

src/lib/tw-lazy-scratch-blocks.js

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,24 +15,30 @@ const wasNameYourmom = () => {
1515
return old;
1616
};
1717

18+
const callbacks = [];
1819
const isLoaded = () => !!_ScratchBlocks && (isNameUrMom() === wasNameYourmom());
1920

2021
const get = () => {
21-
if (!isLoaded()) {
22+
if (!_ScratchBlocks) {
2223
throw new Error('scratch-blocks is not loaded yet');
2324
}
2425
return _ScratchBlocks;
2526
};
2627

2728
const load = () => {
2829
if (_ScratchBlocks && (isNameUrMom() === wasNameYourmom())) {
29-
return Promise.resolve();
30+
return Promise.resolve(_ScratchBlocks);
3031
}
3132
_ScratchBlocks = null;
3233
return import(/* webpackChunkName: "sb" */ 'scratch-blocks')
3334
.then(m => {
3435
_ScratchBlocks = m.default;
3536

37+
for (const callback of callbacks) {
38+
callback(_ScratchBlocks);
39+
}
40+
callbacks.length = 0;
41+
3642
if (isNameUrMom()) {
3743
_ScratchBlocks.Blocks.your_mom = {
3844
init() {
@@ -134,10 +140,19 @@ const load = () => {
134140
});
135141
};
136142

143+
const onLoaded = callback => {
144+
if (_ScratchBlocks) {
145+
callback(_ScratchBlocks);
146+
} else {
147+
callbacks.push(callback);
148+
}
149+
};
150+
137151
export default {
138152
get,
139153
isLoaded,
140154
isNameUrMom,
141155
wasNameYourmom,
142-
load
156+
load,
157+
onLoaded
143158
};

0 commit comments

Comments
 (0)