javascript - 函数上下文绑定,因此我可以捕获远程抛出的异常
问题描述
在我的真实场景中,当停止信号来自 websocket 时,我需要停止在循环中运行的进程。
我现在使用的设计是这样的:
async function process() {
Promise.all([
detonator(),
engine(),
]).catch(e => {
if (e.message === 'detonated')
console.log('it works');
// but it's not caught at all
})
}
async function detonator() {
setTimeout(() => {
console.log('throwing e');
throw new Error('detonated');
}, 1500);
}
async function engine() {
while (true) {
await wait(500);
}
}
async function wait(ms) {
return new Promise(resolve => {
setTimeout(resolve, ms);
});
}
process();
如您所见,当我在该遥控器中抛出异常时,我想从遥控器中停止该engine
方法->这将是我从ws收到的消息。process
但是我需要在方法中的那个 catch 块中捕获该异常process
..这没有发生。
我假设我只需要.bind()
正确地上下文,但是我忘记了一些 js 魔法。
当您不理解我时,请避免发表评论。
赞赏
解决方案
推荐阅读
- angular - 如果字符超出 textarea 中的特定限制,则更改字符颜色
- modbus - 如何连接opc服务器?
- asp.net-mvc-5 - 如果数据计数超过 10K,free-jQgrid 会抛出 SystemOutofMemoryException
- ruby - 无法安装 raakt/hpricot gem
- algorithm - 从多个选项算法中为一组分配一些值的问题
- javascript - 获取通向 D3 视觉中被点击元素的路径 (flare.json)
- java - SonarQube 忽略 @SuppressWarnings("all") 命令
- material-ui - React,Material-UI,网格空项目
- javascript - 设置要下降的列的基值
- c++ - 比较更多 50 个字符串的有效方法