2015-08-23 33 views
1

我需要在提升我的Sails.js應用程序時使用promise來執行某些初始化任務。如何用鉤子取消sails.js電梯

如果這些任務以任何方式失敗,應用程序不應該繼續提升,必須記錄錯誤。此外,這些任務可能無法在有限的預定時間內完成(請參閱the hook definition)。

然而,掛鉤系統只允許調用CB()當鉤已成功完成,而且似乎不是任何方式,我可以讓應用程序:

  • 崩潰,沒有超時(hook:X:error
  • 無法繼續,直到前面的勾,肯定是成功還是失敗

有沒有辦法做到這一點?

回答

2

首先,如果初始化任務是特定於應用程序,你可以只使用bootstrap,而不是一個鉤。將錯誤作爲參數調用引導回調會導致Sails退出。

如果一定要使用鉤子,你可以強制帆退出在幾乎相同的方式 - 從調用掛鉤的initialize方法中的回調與任何非空參數將信號失敗,並導致Sails退出。一般情況下,Node應用程序就是這種情況:任何時候都需要調用回調函數,傳遞一個非空值作爲第一個參數會發出錯誤信號。

所以,如果你的鉤子的initialize揭開序幕的任務需要運行,並且不調用cb()直到他們都完成,並且在任務失敗的任何一點要求cb(<some error>),那麼你會遇到這樣的情況在掛鉤完成之前,帆將不會加載,如果掛鉤未能完成任務,則掛出。

+0

謝謝!後續問題:首先,sails.config.bootstrap或hooks是什麼? – amyspark

+0

鉤子首先運行,所有Sails鉤子都在引導程序中可用。 – sgress454