如何取消sails.js吊钩

时间:2015-08-23 22:43:43

标签: javascript node.js sails.js

在解除我的Sails.js应用程序时,我需要使用promises执行某些初始化任务。

如果这些任务以任何方式失败,应用程序不应继续解除并且必须记录错误。此外,这些任务可能无法在有限的预定义时间内完成(请参阅the hook definition)。

但是,钩子系统只允许在钩子成功完成时调用cb(),似乎没有任何方法可以使应用程序:

  • 崩溃,没有超时(hook:X:error
  • 在前一个钩子确实成功或失败之前无法继续

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

首先,如果初始化任务特定于您的应用程序,您可以只使用bootstrap而不是钩子。调用带有错误的bootstrap回调作为参数将导致Sails挽救。

如果你肯定需要使用一个钩子,你可以强制Sails以相同的方式退出 - 从钩子的initialize方法中调用回调< em>任何非空参数都会发出失败信号,并导致Sails退出。通常情况下,节点应用就是这种情况:每当您需要调用回调时,传递非空值作为第一个参数将发出错误信号。

因此,如果你的initialize启动了你需要运行的任务,并且在完成所有任务之前都不会致电cb(),并且会调用cb(<some error>)在任务失败的任何时候,你都会遇到Sails在挂钩完成之前不会加载的情况,如果挂钩无法完成其任务就会失败。