【发布时间】:2020-09-18 09:19:44
【问题描述】:
如果我用emcc 编译我的C++ 代码而不用-s MODULARIZE=1 -s 'EXPORT_NAME="createMyModule"',我可以像这样加载我的WebAssembly 并访问File System API:
HTML:
<script type="text/javascript">
var Module = {
onRuntimeInitialized: function() {
console.log('Module loaded!');
if (FS.mkdir) {
console.log('File System API available!');
}
}
};
</script>
<script type="text/javascript" src="myWebAssemblyModule.js"></script>
<script type="module" src="my.js"></script>
日志:
Module loaded!
File System API available!
但如果我将-s MODULARIZE=1 -s 'EXPORT_NAME="createMyModule"' 添加为编译器选项,并尝试基于 Promise 访问文件系统 API,则它不起作用:
HTML:
<script type="text/javascript" src="myWebAssemblyModule.js"></script>
<script type="module" src="my.js"></script>
我的.js:
createMyModule().then(MyModule => {
console.log('Module loaded!');
if (MyModule.FS.mkdir) {
console.log('File System API available!');
}
});
日志:
Module loaded!
那么如何使用“基于模块化/承诺”的方法访问文件系统 API?
MyModule.FS 可以访问 btw.,但不能访问 MyModule.FS.mkdir。
【问题讨论】:
标签: javascript webassembly emscripten