Skip to content

Commit 1988ba1

Browse files
Jean Lauliacfacebook-github-bot
Jean Lauliac
authored andcommitted
react-native: BundleSegments: remove async/await
Reviewed By: fromcelticpark Differential Revision: D6508646 fbshipit-source-id: 9e5c05bde5420cb030912eb187f6333af4b580f9
1 parent 9f33fe2 commit 1988ba1

File tree

1 file changed

+29
-25
lines changed

1 file changed

+29
-25
lines changed

Libraries/Utilities/BundleSegments.js

+29-25
Original file line numberDiff line numberDiff line change
@@ -20,35 +20,39 @@ let segmentLoaders = new Map();
2020
* its module. We cache load promises so as to avoid calling `fetchSegment` twice
2121
* for the same bundle. We assume that once a segment is fetched/loaded, it is
2222
* never gettting removed during this instance of the JavaScript VM.
23+
*
24+
* We don't use async/await syntax to avoid depending on `regeneratorRuntime`.
2325
*/
24-
async function loadForModule(moduleID: number): Promise<void> {
25-
const {segmentId} = (require: $FlowFixMe).unpackModuleId(moduleID);
26-
if (segmentId === 0) {
27-
return;
28-
}
29-
let segmentLoader = segmentLoaders.get(segmentId);
30-
if (segmentLoader != null) {
31-
return await segmentLoader;
32-
}
26+
function loadForModule(moduleID: number): Promise<void> {
27+
return Promise.resolve().then(() => {
28+
const {segmentId} = (require: $FlowFixMe).unpackModuleId(moduleID);
29+
if (segmentId === 0) {
30+
return;
31+
}
32+
let segmentLoader = segmentLoaders.get(segmentId);
33+
if (segmentLoader != null) {
34+
return segmentLoader;
35+
}
3336

34-
const {fetchSegment} = global;
35-
if (fetchSegment == null) {
36-
throw new Error(
37-
'When bundle splitting is enabled, the `global.fetchSegment` function ' +
38-
'must be provided to be able to load particular bundle segments.',
39-
);
40-
}
41-
segmentLoader = new Promise((resolve, reject) => {
42-
fetchSegment(segmentId, error => {
43-
if (error != null) {
44-
reject(error);
45-
return;
46-
}
47-
resolve();
37+
const {fetchSegment} = global;
38+
if (fetchSegment == null) {
39+
throw new Error(
40+
'When bundle splitting is enabled, the `global.fetchSegment` function ' +
41+
'must be provided to be able to load particular bundle segments.',
42+
);
43+
}
44+
segmentLoader = new Promise((resolve, reject) => {
45+
fetchSegment(segmentId, error => {
46+
if (error != null) {
47+
reject(error);
48+
return;
49+
}
50+
resolve();
51+
});
4852
});
53+
segmentLoaders.set(segmentId, segmentLoader);
54+
return segmentLoader;
4955
});
50-
segmentLoaders.set(segmentId, segmentLoader);
51-
return await segmentLoader;
5256
}
5357

5458
module.exports = {loadForModule};

0 commit comments

Comments
 (0)