我有一个NodeJS应用程序,我想执行一些文件验证方法但只有一次(此方法将验证节点应用程序下的某些文件)。
有优雅的方法吗?事件
答案 0 :(得分:2)
NodeJS documentation on modules表示:
模块在第一次加载后被缓存。
您可以通过向模块添加静态代码来利用它。无论模块加载了多少次,静态代码都将保持其状态(/ value)。
您可以从方法中使用该状态来实现一个可以随时调用的方法 - 在初始化期间的最佳时间 - 但只能被调用一次。这很简单:
var called = false;
function checkFiles() {
if (called) return;
// Perform your validation
called = true;
}
module.exports = {
checkFiles: checkFiles
};
由于模块缓存,您可以根据需要在任意多个位置使用此文件,它仍然只执行一次。
要调用此功能,您有以下几种选择:
对于一个简单的应用程序,您可以从主模块(或函数)调用该函数,并在那时调用它。如果验证应该是异步的,您可以将main方法包装在函数中,并将其作为回调传递给验证器。
//#! /bin/env node
var express = require('express');
var validator = require('./validator');
validator.checkFiles();
var app = express();
var server = app.listen(3000, function () {
...
});
对于更复杂的应用程序,您应该在现有的初始化例程中调用此函数(同样,必要时使用回调)。
如果你有一个很好的现代基于承诺的初始化程序,你可以简单地添加验证器作为链的第一步。