通过异常实现同步代码让出执行权的原理是什么?
WebAssembly通过异常解除事件循环阻塞的栈处理疑问
WebAssembly模块可通过抛出异常解除事件循环阻塞,让原本的同步代码能够处理事件。目前能找到的唯一实践示例来自Rust的winit crate,其中用于触发异常的throw函数实现如下:
pub fn throw(msg: &str) { wasm_bindgen::throw_str(msg); }
我有两个疑问:
- 抛出这类异常是否会展开WebAssembly的调用栈?
- 即便栈未被展开,在事件处理完成后该如何回退栈?
内容的提问来源于stack exchange,提问作者mallwright
相关产品推荐
相关产品推荐

