2017-08-15 62 views
2

下面的JavaScript代码引发错误myMathModule.exports is undefined无法使用来自WebAssembly模块的导出函数?

<script> 
fetch("test.wasm") 
    .then(function(response) { 
     return response.arrayBuffer(); 
    }) 
    .then(function(buffer) { 
     var moduleBufferView = new Uint8Array(buffer); 
     var myMathModule = WebAssembly.instantiate(moduleBufferView); 


     for(var i = 0; i < 5; i++) { 
      console.log(myMathModule.exports.doubleExp(i)); 
     } 
    }); 
</script> 

test.wasm出口的doubleExp功能。

回答

1

WebAssembly.instantiate是一个承诺。您正在尝试使用承诺在完成时返回的WebAssembly.Instance。类似于

fetch("test.wasm") 
.then(function(response) { 
    return response.arrayBuffer(); 
}) 
.then(function(buffer) { 
    var moduleBufferView = new Uint8Array(buffer); 
    WebAssembly.instantiate(moduleBufferView) 
    .then(function(instantiated) { 
     const instance = instantiated.instance; 
     console.log(instance.exports.doubleExp(i)); 
    }) 
});