如何将 synchronize.js 与节点的 fs.exists 一起使用?

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

Node 的fs.exists 函数不遵循通常的回调回调仅获取一个参数为 true 或 false,而不是通常的错误和结果。因此,我无法弄清楚如何将它与 sync.await.

一起使用

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

此代码:

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

导致错误:

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

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

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

您可以从延迟回调创建一个 partial function,其中 err 参数(第一个)预填充为 null:

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