如何将 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 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

A* 算法理解与实现

[Unity算法]A星寻路:基础版本

树节点森林C ++?

FileCoin 挖矿教程之三:发送与接收 FIL

XSLT:如何将节点值传递给自定义 xsl:function ?

CF-div3-611-F. DIY Garland 优先队列 构造树