如何将 synchronize.js 与节点的 fs.exists 一起使用?
Posted
技术标签:
【中文标题】如何将 synchronize.js 与节点的 fs.exists 一起使用?【英文标题】:How can I use synchronize.js with node's fs.exists? 【发布时间】:2015-11-30 20:43:45 【问题描述】:Node 的fs.exists 函数不遵循通常的回调 回调只获取一个真或假的参数,而不是通常的错误和结果。因此,我无法弄清楚如何将它与 sync.await 一起使用。
是否有一种简单的方法可以将sync.await 与不遵循正常节点回调约定的函数一起使用?
这段代码:
var alreadyExists = sync.await(fs.exists(fileName, sync.defer()));
导致错误:
错误:done() 调用非错误:true
因为 sync.defer() 得到一个布尔值来代替错误。
注意:是的,fs.exists 将来会被弃用。那是一个不同的话题。
【问题讨论】:
仅供参考,请参阅here 的讨论,了解如何使用fs.exists()
是一种充满并发问题的反模式。
【参考方案1】:
您可以从延迟回调创建partial function,其中err
参数(第一个)预填充为null
:
var defer = sync.defer();
var alreadyExists = sync.await(fs.exists(fileName, defer.bind(defer, null)));
【讨论】:
那个小sn-p会让我有点消化,但是谢谢!以上是关于如何将 synchronize.js 与节点的 fs.exists 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章