我在 CoffeeScript 类中有以下函数:
use: (db, fn) ->
fs.exists db, (exists) =>
if exists?
@db = db
@_fetch()
else
fs.writeFile db, {}, (err) =>
if err
err
else
@db = db
@_fetch()
困扰我的是我不得不写@db = db
两次@_fetch()
。我必须这样做的原因是else
子句调用fs.writeFile
它是异步的。因此,我不得不将这两行放在writeFile
的回调中,以确保它们不会过早触发。
但是,有没有办法清理它并编写那些行?目前只有两行,但是如果回调存在10行呢?会很乱,不是吗?
也欢迎对这一小段代码提供任何其他反馈。不太确定错误处理(现在只是返回err
..)。