在解除我的Sails.js应用程序时,我需要使用promises执行某些初始化任务。
如果这些任务以任何方式失败,应用程序不应继续解除并且必须记录错误。此外,这些任务可能无法在有限的预定义时间内完成(请参阅the hook definition)。
但是,钩子系统只允许在钩子成功完成时调用cb(),似乎没有任何方法可以使应用程序:
有没有办法做到这一点?
答案 0 :(得分:2)
首先,如果初始化任务特定于您的应用程序,您可以只使用bootstrap而不是钩子。调用带有错误的bootstrap回调作为参数将导致Sails挽救。
如果你做肯定需要使用一个钩子,你可以强制Sails以相同的方式退出 - 从钩子的initialize
方法中调用回调< em>任何非空参数都会发出失败信号,并导致Sails退出。通常情况下,节点应用就是这种情况:每当您需要调用回调时,传递非空值作为第一个参数将发出错误信号。
因此,如果你的initialize
启动了你需要运行的任务,并且在完成所有任务之前都不会致电cb()
,并且会调用cb(<some error>)
在任务失败的任何时候,你都会遇到Sails在挂钩完成之前不会加载的情况,如果挂钩无法完成其任务就会失败。