bluebirdjs协同程序错误处理(浏览器)
bluebirdjs coroutine error handling (browser)
我应该如何处理bluebird协同程序中的错误?
我在节点中使用co-in已经有一段时间了,它具有很好的catch功能。
co(function*() {
return new Promise(function(resolve, reject) {
// whatever stuff
});
}).catch(function(err) {console.error(error.stack)});
但浏览器/客户端有了蓝鸟,这简直是一场噩梦。没有catch函数,我得到的错误——如果有的话——要么是匿名的,要么是未处理的,这完全是脑力劳动。。。
我查看了bluebirdjs的网站,几个月前就有关于如何处理错误的讨论。甚至有人写道:
应该有一个更好的例子来强调在协同程序中使用try、catch和finally的好处。
http://bluebirdjs.com/docs/api/promise.coroutine.html
我的意思是:试试,catch终于嵌套在协同程序中了?我承认,我甚至在一些日常生活中遵循了这个建议,但我似乎并不正确。Promises和coroutines的全部目的是消除丑陋的过度嵌套,回调已经创建了这些嵌套,现在呢?我们又来了?
请注意,如果有人知道如何将bluebirdjs错误混乱转化为更好的解决方案,我将不胜感激。
如果co
是蓝鸟Promise.coroutine
,它将自动传播错误并记录未处理的拒绝。
记录未处理的错误。您可以处理以下错误:
Promise.coroutine(function*() {
try {
doSomething();
yield doSomethingAsync();
} catch (e) {
// handle error
}
})();
相关文章:
- 在循环中附加事件处理程序时出现浏览器性能问题
- 是浏览器在AJAX响应中自动处理的HTTP标头
- 等待图标,用于通过 ashx 处理程序在浏览器中加载 pdf
- Android原生浏览器中的dom处理时间太长
- 浏览器和大量的图像文件处理
- 调用ashx处理程序后关闭浏览器中的选项卡
- 使用Backbone.js处理浏览器历史记录
- 如何处理浏览器上的禁用JS
- 如何在使用HTML5 pushState更改浏览器URL时处理后退按钮
- 扩展浏览器以处理Apple键盘事件
- 除了用于DOM之外,浏览器中的事件处理API
- 如何避免在浏览器 JavaScript 中双击时(单击鼠标)处理
- 模拟 Web 浏览器方向更改事件以使用 Jasmine 测试绑定事件处理程序函数
- 谷歌浏览器扩展名$.ajax发布事件处理程序错误
- 如何处理浏览器中显示数据的重载处理
- 承诺和处理谷歌浏览器中的错误
- 如何处理对后端服务进行相同调用的多个浏览器脚本
- 游戏在浏览器.处理事件的位置:在前端或后端
- googlechrome-浏览器处理JavaScript鼠标事件的方式不同
- 如何在浏览器处理请求时禁用开始按钮