How to cancel sails.js lift with a hook

拈花ヽ惹草 提交于 2020-01-06 02:29:29

问题


I need to perform certain initialization tasks using promises when lifting my Sails.js app.

If these tasks fail in any way, the app should not continue lifting and must log an error. In addition, these tasks may not complete in a finite, predefined time (see the hook definition).

However, the hook system only allows to call cb() when the hook has successfully completed, and there seems not to be any way in which I can make the app:

  • crash, without a timeout (hook:X:error)
  • not able to continue until the previous hook has definitely succeeded or failed

Is there any way to do this?


回答1:


First off, if the initialization tasks are specific to your application, you may be able to just use the bootstrap instead of a hook. Calling the bootstrap callback with an error as the argument will cause Sails to bail out.

If you do definitely need to use a hook, you can force Sails to exit in much the same way--calling the callback from within the initialize method of the hook with any non-null argument will signal a failure, and cause Sails to exit. This is the case with Node apps in general: any time you are expected to call a callback, passing a non-null value as the first argument will signal an error.

So, if your hook's initialize kicks off the tasks you need to run, and doesn't call cb() until they are all completed, and calls cb(<some error>) at any point where the tasks fail, then you'll have a situation where Sails won't load until the hook is finished, and bails out if the hook fails to complete its tasks.



来源:https://stackoverflow.com/questions/32172270/how-to-cancel-sails-js-lift-with-a-hook

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!