【问题标题】:How can I use synchronize.js with node's fs.exists?如何将 synchronize.js 与节点的 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() 是一种充满并发问题的反模式。

标签: javascript node.js asynchronous fs synchronize


【解决方案1】:

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

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

【讨论】:

  • 那个小sn-p会让我有点消化,但是谢谢!
猜你喜欢
  • 2020-12-11
  • 2018-10-24
  • 1970-01-01
  • 2018-10-20
  • 1970-01-01
  • 1970-01-01
  • 2018-12-03
  • 2022-07-16
  • 2021-03-22
相关资源
最近更新 更多