exit.js 694 B

12345678910111213141516171819202122232425262728
  1. 'use strict';
  2. const assert = require('assert');
  3. const is = require('is-type-of');
  4. const once = require('once');
  5. module.exports = getExitFunction;
  6. function getExitFunction(beforeExit, logger, label) {
  7. if (beforeExit) assert(is.function(beforeExit), 'beforeExit only support function');
  8. return once(code => {
  9. if (!beforeExit) process.exit(code);
  10. Promise.resolve()
  11. .then(() => {
  12. return beforeExit();
  13. })
  14. .then(() => {
  15. logger.info('[%s] beforeExit success', label);
  16. process.exit(code);
  17. })
  18. .catch(err => {
  19. logger.error('[%s] beforeExit fail, error: %s', label, err.message);
  20. process.exit(code);
  21. });
  22. });
  23. }