【发布时间】:2018-03-02 18:09:54
【问题描述】:
我是 Node.js 的新手,我一直在阅读与此问题相关的问题和答案,但仍然不太确定我是否完全理解我的案例中的概念。
建议代码
router.post('/test123', function(req, res) {
someAsyncFunction1(parameter1, function(result1) {
someAsyncFunction2(parameter2, function(result2) {
someAsyncFunction3(parameter3, function(result3) {
var theVariable1 = req.body.something1;
var theVariable2 = req.body.something2;
)}
)}
});
问题 我假设将有多个(可以是 10+、100+ 或其他)请求到某个特定位置(例如,对 /test123 的 ajax 请求,如上所示),同时带有一些变量(something1 和 something2)。根据this,一个用户的 theVariable1 和 theVariable2 不可能与另一个用户的 req.body.something1 和 req.body.something2 混合(即被覆盖)。我想知道当有多个回调(如上面的三个,或十个,以防万一)时,这是否是真的。
而且,我还考虑使用 res.locals 来保存回调中的一些数据(而不是使用 theVariable1 和 theVariable2,但考虑到由于来自客户端的多个同时请求不会覆盖数据,这样做是个好主意吗?
【问题讨论】:
-
是的,变量不可能混淆。
functions 在 JS 中作用域。 -
整个问题有点混乱,如果我误解了你,请原谅我。每个用户都会发出一个单独的 HTTP 请求,因此他们的代码不会发生冲突,因此变量不会在用户之间混淆。
-
感谢您的 cmets!这正是我想问的。
-
也可以使用
res.locals在本地持久化数据(在请求范围内):expressjs.com/es/4x/api.html#res.locals