@@ -644,7 +644,7 @@ def generate_js(data_target, data_files, metadata):
644
644
645
645
if not options .export_es6 :
646
646
ret += '''
647
- (() => {'''
647
+ (async () => {'''
648
648
649
649
ret += '''
650
650
// Do not attempt to redownload the virtual filesystem data when in a pthread or a Wasm Worker context.
@@ -662,8 +662,6 @@ def generate_js(data_target, data_files, metadata):
662
662
var require = createRequire(import.meta.url);
663
663
}\n '''
664
664
665
- if options .export_es6 :
666
- ret += 'return new Promise((loadDataResolve, loadDataReject) => {\n '
667
665
ret += ' async function loadPackage(metadata) {\n '
668
666
669
667
code = '''
@@ -716,8 +714,6 @@ def generate_js(data_target, data_files, metadata):
716
714
create_data = '''// canOwn this data in the filesystem, it is a slice into the heap that will never change
717
715
Module['FS_createDataFile'](this.name, null, byteArray, true, true, true);
718
716
Module['removeRunDependency'](`fp ${that.name}`);'''
719
- ready_promise = '''
720
- loadDataResolve();'''
721
717
722
718
if not options .lz4 :
723
719
# Data requests - for getting a block of data out of the big archive - have
@@ -744,14 +740,14 @@ def generate_js(data_target, data_files, metadata):
744
740
finish: async function(byteArray) {
745
741
var that = this;
746
742
%s
747
- this.requests[this.name] = null;%s
743
+ this.requests[this.name] = null;
748
744
}
749
745
};
750
746
751
747
var files = metadata['files'];
752
748
for (var i = 0; i < files.length; ++i) {
753
749
new DataRequest(files[i]['start'], files[i]['end'], files[i]['audio'] || 0).open('GET', files[i]['filename']);
754
- }\n ''' % (create_preloaded if options .use_preload_plugins else create_data , ready_promise if options . export_es6 else '' )
750
+ }\n ''' % (create_preloaded if options .use_preload_plugins else create_data )
755
751
756
752
if options .has_embedded and not options .obj_output :
757
753
diagnostics .warn ('--obj-output is recommended when using --embed. This outputs an object file for linking directly into your application is more efficient than JS encoding' )
@@ -992,9 +988,6 @@ def generate_js(data_target, data_files, metadata):
992
988
return contents.buffer;
993
989
}''' .strip ()
994
990
995
- reject_promise = '''
996
- loadDataReject();'''
997
-
998
991
ret += '''
999
992
async function fetchRemotePackage(packageName, packageSize) {
1000
993
%(node_support_code)s
@@ -1099,14 +1092,13 @@ def generate_js(data_target, data_files, metadata):
1099
1092
if (!fetched) {
1100
1093
// Note that we don't use await here because we want to execute the
1101
1094
// the rest of this function immediately.
1102
- fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE).then((data) => {
1103
- if (fetchedCallback) {
1104
- fetchedCallback(data);
1105
- fetchedCallback = null;
1106
- } else {
1107
- fetched = data;
1108
- }
1109
- })
1095
+ let packageData = await fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE);
1096
+ if (fetchedCallback) {
1097
+ fetchedCallback(packageData);
1098
+ fetchedCallback = null;
1099
+ } else {
1100
+ fetched = packageData;
1101
+ }
1110
1102
}\n '''
1111
1103
1112
1104
code += '''
@@ -1124,7 +1116,7 @@ def generate_js(data_target, data_files, metadata):
1124
1116
ret += '''
1125
1117
}
1126
1118
if (Module['calledRun']) {
1127
- runWithFS(Module);
1119
+ await runWithFS(Module);
1128
1120
} else {
1129
1121
(Module['preRun'] ??= []).push(runWithFS); // FS is not initialized yet, wait for it
1130
1122
}\n '''
@@ -1163,11 +1155,10 @@ def generate_js(data_target, data_files, metadata):
1163
1155
else :
1164
1156
ret += '''
1165
1157
}
1166
- loadPackage(%s);\n ''' % json .dumps (metadata )
1158
+ await loadPackage(%s);\n ''' % json .dumps (metadata )
1167
1159
1168
1160
if options .export_es6 :
1169
1161
ret += '''
1170
- });
1171
1162
}
1172
1163
// END the loadDataFile function
1173
1164
'''
0 commit comments