2015-05-26 4 views
0

Предположим, я пишу модуль handler.js как Express.js промежуточного слоя:Как выполнить действие при выключении?

var info = {}; 

infohandler.setinfo = function(i){ info[i] = Math.random(); } 
infohandler.saveinfo = function(){ fs.writeFileSync("info.json", info); } 

function handler(req, res, next){ // here are some operation call to infohandler according to req. } 

module.exports = handler; 

И в app.js я импортировать этот handler.js:

var handler = require("handler"); 

Я хочу сохранить некоторую информацию в перед загрузкой сервера. Как я могу это сделать?

ответ

1

Использовать process.on для привязки к событию exit. Это событие вызывается изящная остановка:

process.on('exit', function() { 
    // your clean up code 
}); 

Если вы хотите, чтобы поймать определенные сигналы (например, SIGTERM, который отправить по умолчанию, используя Разрушитель (1)) связывает с именем сигнала:

process.on('SIGTERM', function() { /* ... */ }); 

Обратите внимание, что это будет disable the default action (shutdown). Обязательно вручную вызовите process.exit.

+0

Спасибо, но я все еще не понимаю, как я могу вызвать функцию infohandler.saveinfo? – Kuan

+0

@Kuan Позвоните, где написано «ваш очищающий код». Обязательно выполняйте только синхронные операции. – TimWolla

Смежные вопросы