const express = require('express');
const app = express();
app.set('view engine', 'ejs');
app.listen(10000);
function function_a(inp)
{
var tmp_var = inp;
console.log(tmp_var)
//10 - the first time
//20 - the second time
app.get('/pageno1', (req, res) => {
res.redirect('...');
//..
console.log(tmp_var) //10 - on both calls
//..
});
}
function start(/* .. */)
{
//...
function_a(10);
function_a(20);
}
假设我有两个简化的函数,如上所示。我的问题是tmp_var
在app.get('/pageno1')
内的两个调用中都保持相同的值,即使我传递了不同的值。
我想提请你注意两点;
a)我不使用next();
(我不确定这是不是问题),
b)我没有'默认'页面(app.get('/', ...)
),因为我不需要它(有点奇怪,但这就是我的情况。)我不介意添加一个,如果那是问题。
修改:
预期的最终结果是什么:获取传递到URL的URL参数和(例如:example.com/route?=<...>)并将用户重定向到页面。之后在我的代码中完成,在另一个函数中,使用存储的变量并使用从URL和存储的变量获得的参数做一些其他事情。等待下一个GET请求。
我尝试了什么:
app.get('/pageno1', (req, res, next) => {
res.redirect('https://..');
//when that is done, move to another function
//here comes the issue (that other function needs the stored variable)
//and although its not needed inside `app.get` I need to pass it to the
//function after thats done.
function_A(param, req.query);
});
function_A(inp1, inp2)
{
//do some things
}
如果可以使用本机HTTPS模块完成,我不介意不使用express。 最后,如果不清楚,我想在另一个函数(function_A)中传递局部变量。所以不一定在/ pageno1请求中。但是,在完成pageno1请求之后,我需要本地变量和请求中的req来调用function_A。
如果您需要更好的解释,请随时提问!