@@ -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 = '''
@@ -713,8 +711,6 @@ def generate_js(data_target, data_files, metadata):
713
711
create_data = '''// canOwn this data in the filesystem, it is a slide into the heap that will never change
714
712
Module['FS_createDataFile'](this.name, null, byteArray, true, true, true);
715
713
Module['removeRunDependency'](`fp ${that.name}`);'''
716
- ready_promise = '''
717
- loadDataResolve();'''
718
714
719
715
if not options .lz4 :
720
716
# Data requests - for getting a block of data out of the big archive - have
@@ -741,14 +737,14 @@ def generate_js(data_target, data_files, metadata):
741
737
finish: function(byteArray) {
742
738
var that = this;
743
739
%s
744
- this.requests[this.name] = null;%s
740
+ this.requests[this.name] = null;
745
741
}
746
742
};
747
743
748
744
var files = metadata['files'];
749
745
for (var i = 0; i < files.length; ++i) {
750
746
new DataRequest(files[i]['start'], files[i]['end'], files[i]['audio'] || 0).open('GET', files[i]['filename']);
751
- }\n ''' % (create_preloaded if options .use_preload_plugins else create_data , ready_promise if options . export_es6 else '' )
747
+ }\n ''' % (create_preloaded if options .use_preload_plugins else create_data )
752
748
753
749
if options .has_embedded and not options .obj_output :
754
750
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' )
@@ -989,9 +985,6 @@ def generate_js(data_target, data_files, metadata):
989
985
return contents.buffer;
990
986
}''' .strip ()
991
987
992
- reject_promise = '''
993
- loadDataReject();'''
994
-
995
988
ret += '''
996
989
async function fetchRemotePackage(packageName, packageSize) {
997
990
%(node_support_code)s
@@ -1096,14 +1089,13 @@ def generate_js(data_target, data_files, metadata):
1096
1089
if (!fetched) {
1097
1090
// Note that we don't use await here because we want to execute the
1098
1091
// the rest of this function immediately.
1099
- fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE).then((data) => {
1100
- if (fetchedCallback) {
1101
- fetchedCallback(data);
1102
- fetchedCallback = null;
1103
- } else {
1104
- fetched = data;
1105
- }
1106
- })
1092
+ let packageData = await fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE);
1093
+ if (fetchedCallback) {
1094
+ fetchedCallback(packageData);
1095
+ fetchedCallback = null;
1096
+ } else {
1097
+ fetched = packageData;
1098
+ }
1107
1099
}\n '''
1108
1100
1109
1101
code += '''
@@ -1121,7 +1113,7 @@ def generate_js(data_target, data_files, metadata):
1121
1113
ret += '''
1122
1114
}
1123
1115
if (Module['calledRun']) {
1124
- runWithFS(Module);
1116
+ await runWithFS(Module);
1125
1117
} else {
1126
1118
(Module['preRun'] ??= []).push(runWithFS); // FS is not initialized yet, wait for it
1127
1119
}\n '''
@@ -1160,11 +1152,10 @@ def generate_js(data_target, data_files, metadata):
1160
1152
else :
1161
1153
ret += '''
1162
1154
}
1163
- loadPackage(%s);\n ''' % json .dumps (metadata )
1155
+ await loadPackage(%s);\n ''' % json .dumps (metadata )
1164
1156
1165
1157
if options .export_es6 :
1166
1158
ret += '''
1167
- });
1168
1159
}
1169
1160
// END the loadDataFile function
1170
1161
'''
0 commit comments