关于javascript:如何将syncnize.js与节点的fs.exists一起使用?

How can I use synchronize.js with node's fs.exists?

Node的fs.exists函数未遵循通常的回调。回调仅获取具有true或false的参数,而不是通常的错误和结果。因此,我不知道如何在sync.await中使用它。

是否有一种简单的方法可以将sync.await与不遵循常规节点回调约定的函数一起使用?

此代码:

1
var alreadyExists = sync.await(fs.exists(fileName, sync.defer()));

导致错误:

Error: done() invoked with non-Error: true

因为sync.defer()得到了一个布尔值来代替错误。

注意:是的,fs.exists将来会被弃用。那是一个不同的主题。


您可以从延迟的回调中创建部分函数,??其中err参数(第一个)预先填充为null

1
2
var defer         = sync.defer();
var alreadyExists = sync.await(fs.exists(fileName, defer.bind(defer, null)));