深入理解Node.js异步编程中的Promise与错误处理
在Node.js异步编程中,Promise目前分为两类:传统的基于generator的可选的Promise/A+实现,和基于事件的实现。
-
常见Promise库:
-
async与eventproxy:eventproxy是国人开发的作品,基于事件驱动,这种想法非常有趣。cnodejs正是基于它的。
-
then.js:也是国人的作品,功能还不错,但因缺少广泛测试,在生产环境使用需谨慎。
-
bluebird:功能全面,并且效率较高,是许多开发者的首选。
-
q:这是一个较早的实现,支持两种方式,功能完善但效率稍低。
-
co:仅支持generator,但简化了异步流程。
-
deferred():简单易用,适合小型项目。
-
bluebird的优势:
-
在异步编程中的错误处理上,bluebird做到了理想化的实现方式,例如很多编程语言中已有的try/catch方式,这使得开发者在处理错误时更加人性化。
示例:
try {
var val = JSON.parse(fs.readFileSync(\"file.json\"));
} catch(SyntaxError e) {
console.error(\"JSON语法错误\");
}
这种方式让代码结构更加清晰,同时便于排查错误。