如何将节点中的异步回调添加到函数调用?
Posted
技术标签:
【中文标题】如何将节点中的异步回调添加到函数调用?【英文标题】: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 要求提供回调选项。
【参考方案1】:
new
命令的代码似乎在https://github.com/zurb/foundation-cli/blob/master/lib/commands/new.js 上可用
编写此代码的目的不是为了以编程方式使用new
命令(它在任何地方都使用console.log),并且在工作完成时不会调用任何回调。
所以没有办法使用这个包来做你正在寻找的东西。修补软件包或找到其他方法来完成您想要实现的目标。
【讨论】:
我已经准备好修补软件包了。鉴于“完成”方法在完成后被 CLI 调用,它似乎并不过分复杂。async.series(tasks, finish);
。我的问题是……我在哪里可以了解我需要用来执行此操作的代码……我想象一个信号由“完成”方法广播,然后我在代码中使用信号处理程序捕获该信号。问题是我不知道如何使用节点来做到这一点。只有 C!
我不知道你在找什么。如果您需要自动化任务来设置项目或环境,请查看grunt
或gulp
。 Foundation-cli 可能不是您项目的良好起点以上是关于如何将节点中的异步回调添加到函数调用?的主要内容,如果未能解决你的问题,请参考以下文章
回调不是使用节点 js 的异步模块的 mongodb 查询中的函数
给元素添加子节点,元素子节点数改变,反过来影响上方调用其值的异步任务回调函数(如click。load,定时器等