如何在页面刷新时执行NodeJSfunction
我从一个例子中编写了一个小型的NodeJS应用程序。 下面是我的代码的一部分。
server.js:
var app = express(); var helper = require('./helpers.something.js'); helper.calculate(function(result) { app.set('something', result); }); var router = express.Router(); var home = require(./controllers/home.js); router.get('/', home.index);
home.js
exports.index = (function(req, res) { res.locals.calculations = req.app.get('something'); res.render('home', { data: req.app.get('something'); }); };
我现在试图解决的问题是helper.calculate函数仅在服务器启动时调用,而不是在每次页面刷新时调用。 任何人都可以告诉我,如果我想在home.js和server.js文件中使用结果,每当页面刷新的时候我怎样才能调用helper.calculate,因为我在express.js文档中很遗憾。
您可以创build一个中间件,每次访问此路由时都会运行该function。
你可能会改变这个:
helper.calculate(function(result) { app.set('something', result); }); var router = express.Router(); var home = require(./controllers/home.js); router.get('/', home.index);
像这样的东西:
var router = express.Router(); var home = require(./controllers/home.js); const calculate = (req, res, next) => { helper.calculate(function(result) { app.set('something', result); }); next(); }; router.get('/', calculate, home.index);
要么:
var router = express.Router(); var home = require(./controllers/home.js); const calculate = (req, res, next) => { helper.calculate(function(result) { app.set('something', result); next(); }); }; router.get('/', calculate, home.index);
取决于是否要等待运行控制器,直到helper.calculate()
完成。
另一个select是把这个添加到home.js中的控制器代码中,但我认为你不想这样做,因为你会一个接一个地使用app.set()
和app.get()
,所以我猜你要分开设置variables和使用它的行为。