bluebirdjs协程错误处理(浏览器)
bluebirdjs coroutine error handling (browser)
我应该如何处理 bluebird 协程中的错误?
我在node中使用co已经有一段时间了,它有很好的catch功能。
co(function*() {
return new Promise(function(resolve, reject) {
// whatever stuff
});
}).catch(function(err) {console.error(error.stack)});
但是 browser/client 一方有蓝鸟,这完全是一场噩梦。没有 catch 函数,我返回的错误——如果有的话——要么是匿名的,要么是未处理的,这完全是脑力...
我查看了 bluebirdjs 的网站,几个月前有人在讨论如何处理错误。最后有人写道:
There should be a better example highlighting the benefits of using try, catch and finally inside coroutine.
http://bluebirdjs.com/docs/api/promise.coroutine.html
我的意思是:试试看,catch终于嵌套在协程里了?我承认,我什至在一些例程中一直遵循该建议,但我似乎并不正确。 Promises 和协同程序的全部意义在于摆脱丑陋的过度嵌套,回调已经创建,现在怎么办?又来了?
拜托,如果有人知道如何将这个 bluebirdjs 错误混乱变成更好的解决方案,我将不胜感激。
如果 co
是蓝鸟 Promise.coroutine
它将自动传播错误并记录未处理的拒绝。
记录了未处理的错误。您可以处理如下错误:
Promise.coroutine(function*() {
try {
doSomething();
yield doSomethingAsync();
} catch (e) {
// handle error
}
})();
我应该如何处理 bluebird 协程中的错误?
我在node中使用co已经有一段时间了,它有很好的catch功能。
co(function*() {
return new Promise(function(resolve, reject) {
// whatever stuff
});
}).catch(function(err) {console.error(error.stack)});
但是 browser/client 一方有蓝鸟,这完全是一场噩梦。没有 catch 函数,我返回的错误——如果有的话——要么是匿名的,要么是未处理的,这完全是脑力...
我查看了 bluebirdjs 的网站,几个月前有人在讨论如何处理错误。最后有人写道:
There should be a better example highlighting the benefits of using try, catch and finally inside coroutine.
http://bluebirdjs.com/docs/api/promise.coroutine.html
我的意思是:试试看,catch终于嵌套在协程里了?我承认,我什至在一些例程中一直遵循该建议,但我似乎并不正确。 Promises 和协同程序的全部意义在于摆脱丑陋的过度嵌套,回调已经创建,现在怎么办?又来了?
拜托,如果有人知道如何将这个 bluebirdjs 错误混乱变成更好的解决方案,我将不胜感激。
如果 co
是蓝鸟 Promise.coroutine
它将自动传播错误并记录未处理的拒绝。
记录了未处理的错误。您可以处理如下错误:
Promise.coroutine(function*() {
try {
doSomething();
yield doSomethingAsync();
} catch (e) {
// handle error
}
})();