节点的fs.exists函数不遵循通常的回调。回调只获得一个带有true或false的参数,而不是通常的错误和结果。因此,我无法弄清楚如何在sync.await中使用它。
是否有一种简单的方法可以将sync.await与不符合普通节点回调约定的函数一起使用?
此代码:
var alreadyExists = sync.await(fs.exists(fileName, sync.defer()));
导致错误:
错误:使用非错误调用done():true
因为sync.defer()得到一个布尔代替错误。
注意:是的,fs.exists将来会被弃用。这是一个不同的主题。
答案 0 :(得分:2)
您可以从延迟回调中创建partial function,其中err
参数(第一个)预填充为null
:
var defer = sync.defer();
var alreadyExists = sync.await(fs.exists(fileName, defer.bind(defer, null)));