nab*_*nab 18 control-flow node.js
我知道node.js 有很多控制流库.其中一些让一个链异步函数与回调(如async,asyncblock等),其他使用promise概念(Q,延期,期货等).鉴于长时间运行的脚本会一个接一个地执行一系列可能随时失败的操作,您更喜欢哪种控制流程?为什么?优缺点都有什么?
joe*_*dle 13
回调的优点:
(error,result)始终选择回调.我建议遵循他们的参数顺序以保持一致性 (与之相反(result1, result2, result3, error).)承诺的优点:
.then(foo).then(bar)调用线性流动.map,Q具有allResolved和ES6承诺提供Promise.all().(这也可以通过回调来实现,例如使用async.parallel(),但不是内置的.)if (err) return callback(err);在每个回调开始时.对于将每秒运行多次的代码,在堆栈底部附近使用回调是有意义的.堆栈越高,承诺可能更好,因为它们更容易阅读和理解,并且可以更优雅地处理错误.
值得注意的是,promises可以在运行时从回调构建.因此,您可以在极简主义回调表单中实现核心代码,并且如果您愿意,仍然会公开该库的promises版本.(如Q.nfbind().)
我很想知道其他优点/缺点.
额外提示:始终处理错误!使用这两种方法,如果你不处理错误,它就会消失,让你不知道为什么你的代码没有按预期工作.
回调应始终处理
if (err) ...,.catch()如果不返回,Promise应始终具有.即使您有时期望错误,也不需要处理错误,但不处理意外错误意味着如果将来更改代码,您将不会听到开发人员错误(如拼写错误)中的错误.
.catch()Promise 的另一种选择是倾听未经处理的拒绝.我个人用这个来发出一个.catch()丢失的警告!
| 归档时间: |
|
| 查看次数: |
4882 次 |
| 最近记录: |