我正在用javascript中的新ecma6生成器和yield-operator包住头,特别是在koa的上下文中。
考虑一下人为的示例:
newUser.save(function(err, user) {
if(err){
//do something with the error
}
console.log("user saved!: " user.id);
}
'Yieldified'这看起来像这样:
var user = yield newUser.save();
console.log("user saved!: " user.id);
但是err
,为了执行目的,我将如何检查是否存在//do something with the error
?
不幸的是,生成器会吸收错误处理。我的意思是在方法的每个步骤中手动检查错误并手动传播错误也很糟糕,但不如
try-catch
Javascript中的语句那么多。如您所见,try catch语句的问题在于它捕获了所有内容。还有一个问题是,在运行时会在Javascript中引发其他语言的编译器错误。但是,如果只使用try catch而没有检查,则根本看不到它们。