V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  3dgen  ›  全部回复第 1 页 / 共 1 页
回复总数  2
2018-08-20 14:25:40 +08:00
回复了 zzhbbdbbd 创建的主题 前端开发 关于 WebAssembly 的问题: Wasm decoding failed
看楼主的写法,是希望递归调用来计算斐波拉契序列的 n 项值,但问题是:Fibonacci 这个函数应该调用自身,但是你在 Fibonacci 里面调用的是函数 f,而不是自身,这根本就不是递归调用的写法啊。正确的写法是这样:

export function f(x:i32):i32{
if(x === 1 || x === 2) {
return 1
}
return f(x - 1) + f(x - 2)
}

当然你把 f 全部换成 Fibonacci 效果一样,JS 部分亲测可用:

function fetchAndInstantiate(url, importObject) {
return fetch(url).then(response =>
response.arrayBuffer()
).then(bytes =>
WebAssembly.instantiate(bytes, importObject)
).then(results =>
results.instance
);
}

fetchAndInstantiate('f.wasm').then(
function(instance) {
console.log(instance.exports.f(10));
}
);

控制台输出 55。

另外,楼上的链接给错了,我帮他改改,应该是这个:
https://github.com/chai2010/awesome-wasm-zh
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2631 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 12ms · UTC 15:39 · PVG 23:39 · LAX 07:39 · JFK 10:39
Developed with CodeLauncher
♥ Do have faith in what you're doing.