如何取消sails.js电梯钩
我需要在提升我的Sails.js应用程序时使用promise来执行某些初始化任务。
如果这些任务以任何方式失败,应用程序不应该继续解除,并且必须logging一个错误。 另外,这些任务可能无法在有限的预定义时间内完成(请参阅钩子定义 )。
但是,钩子系统只允许在钩子成功完成时调用cb(),而且似乎没有任何方法可以让应用程序:
- 崩溃,没有超时( 挂钩:X:错误 )
- 无法继续,直到以前的钩子已经成功或失败
有没有办法做到这一点?
首先,如果初始化任务是特定于您的应用程序的,那么您可以使用bootstrap而不是钩子。 调用bootstrapcallback函数作为参数会导致Sails退出。
如果你肯定需要使用一个钩子,你可以强制Sails以同样的方式退出 – 使用任何非null参数在钩子的initialize
方法内调用callback将会表示失败,并导致Sails退出。 一般情况下Node应用程序就是这种情况:任何时候您都需要调用一个callback函数,传递一个非空值作为第一个参数会发出错误信号。
所以,如果你的钩子的initialize
启动了你需要运行的任务,并且在它们全部完成之前不调用cb()
,并且在任务失败的时候调用cb(<some error>)
,那么你将有一个情况,Sails在挂钩完成之前将不会加载,如果挂钩不能完成任务,则退出。