让我们进入正题。我喜欢 CS,我喜欢 node,而且我非常喜欢使用众神建议的回调。
不幸的是,我通常最终会不断检查稍微嵌套的回调中的错误。
以下是完成相同示例任务的三种不同样式。哪一个可以用来避免缩进和条件地狱,同时又不牺牲可读性?
如果不使用 Promise、async 或 iced-cs,请随时提出新的建议。
authenticate: (token, cb) =>
@collection 'services', (err, collection) =>
if err
cb err, undefined
else
collection.findOne token: token, (errFindingService, service) =>
if err
cb errFindingService, undefined
else
cb undefined, service
authenticate: (token, cb) =>
@collection 'services', (err, collection) =>
if not err
collection.findOne token: token, (errFindingService, service) =>
if not errFindingService
cb undefined, service
else
cb errFindingService, undefined
else
cb err, undefined
authenticate: (token, cb) =>
@collection 'services', (err, collection) =>
return cb err, undefined if err
collection.findOne token: token, (errFindingService, service) =>
return cb errFindingService, undefined if err
cb undefined, service
PS:在第二个我使用if not err
而不是unless
符合https://github.com/polarmobile/coffeescript-style-guide
谢谢大家。^_^