【问题标题】:How to add async callbacks in node to a function call?如何将节点中的异步回调添加到函数调用?
【发布时间】:2015-06-10 17:09:55
【问题描述】:

问题太宽泛/不清楚。任何对此答案感兴趣的人都可以访问:Creating Callbacks for required modules in node.js

基本上,我在我的节点应用程序中包含了一个 CLI 包。我需要 CLI 来启动一个新项目(这需要为该项目创建一个文件夹)。创建项目文件夹后,我需要在文件夹中创建一些文件(使用 fs writeFile)。现在的问题是,我的 writeFile 函数在 CLI 包创建文件夹之前执行(这是由我的 console.log 检测到的。这让我想到了主要问题。

我可以在不修改我包含的包的情况下向 CLI.new 添加异步回调函数吗?

  FoundationCLI.new(null, {
    framework: 'sites', // 'apps' or 'emails' also
    template: 'basic', // 'advanced' also
    name: projectName,
    directory: $scope.settings.path.join("")
  });

  try{
    if (!fs.existsSync(path)){
      console.log("DIRECTORY NOT THERE!!!!!");
    }
    fs.writeFileSync(correctedPath, JSON.stringify(project) , 'utf-8');
  } catch(err) {
    throw err;
  }

它使用基础-cli。新命令执行以下异步系列。我很想在包中添加一个回调 - 仍然不太确定如何。

async.series(任务,完成);

对此感兴趣的任何人都可能获得以下信息:

Creating Callbacks for required modules in node.js

【问题讨论】:

  • CLI 文档是否提到了完成回调?
  • 他们没有提到完成回调。我愿意修改包以添加此功能,但我觉得我参加了一个我从未参加过的课程的决赛。
  • 这里的CLI 是什么?除非你更具体,否则不可能知道它能做什么。如果可以编辑它,为什么不添加回调参数?值得注意的是,promises 通常更易于使用,您可以将它们链接在一起:CLI.new(...).then(...).then(...)
  • 你能链接到你为CLI使用的模块吗?看似显而易见的cli package 似乎不是您使用的。
  • foundation-cli 似乎不打算用作 API,仅用作命令。您可能会submit an issue 要求提供回调选项。

标签: node.js


【解决方案1】:

new 命令的代码似乎在https://github.com/zurb/foundation-cli/blob/master/lib/commands/new.js 上可用

编写此代码的目的不是为了以编程方式使用new 命令(它在任何地方都使用console.log),并且在工作完成时不会调用任何回调。

所以没有办法使用这个包来做你正在寻找的东西。修补软件包或找到其他方法来完成您想要实现的目标。

【讨论】:

  • 我已经准备好修补软件包了。鉴于“完成”方法在完成后被 CLI 调用,它似乎并不过分复杂。 async.series(tasks, finish);。我的问题是……我在哪里可以了解我需要用来执行此操作的代码……我想象一个信号由“完成”方法广播,然后我在代码中使用信号处理程序捕获该信号。问题是我不知道如何使用节点来做到这一点。只有 C!
  • 我不知道你在找什么。如果您需要自动化任务来设置项目或环境,请查看gruntgulp。 Foundation-cli 可能不是您项目的良好起点
猜你喜欢
  • 2016-12-09
  • 1970-01-01
  • 1970-01-01
  • 2015-09-08
  • 2018-04-11
  • 1970-01-01
  • 2015-01-22
  • 2017-08-27
  • 2017-01-09
相关资源
最近更新 更多