请求中的值是否会在回调中混淆?

时间:2018-03-02 18:09:55

标签: node.js express callback

我是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;
    )}
  )}
});

问题 我假设一些变量(something1和something2)会同时向某个地方发出多个(可能是10 +,100 +或其他)请求(例如,对/ test123的ajax请求,如上所示)。根据{{​​3}},一个用户的theVariable1和theVariable2不可能与另一个用户的req.body.something1和req.body.something2混淆(即被覆盖)。我想知道当有多个回调时(如上所述三个,或者十个,以防万一)这是否属实。

并且,我还考虑使用res.locals来保存回调中的一些数据(而不是使用theVariable1和theVariable2,但是这样做是个好主意,因为客户端会同时发出多个请求而不会覆盖数据?

1 个答案:

答案 0 :(得分:1)

每个请求都会为Node.js / Express服务器生成一个新的let imgNum = indexPath.row % 3 if imgNum == 0 { // use Img1 } else if imgNum == 1 { // use Img2 } else { // use Img3 } 对象。

因此,在行req中,作为参数传入的router.post('/test123', function(req, res)对象对于该HTTP连接是唯一的。

您不必担心多个功能或回调。在传统的应用程序中,如果我有两个reqcat对象,我可以将其传递给dog函数,我会返回listenmeow。即使只有一个bark函数。这就是你可以查看Express应用程序的方式。即使您拥有所有这些listenget函数,每个用户的请求也会作为唯一实体传递给它们。