我是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请求,如上所示) 。根据this的说法,一个用户的theVariable1和theVariable2不可能与其他用户的req.body.something1和req.body.something2混淆(即被覆盖)。我想知道当有多个回调时(如上所述三个,或者十个,以防万一)这是否属实。
并且,我还考虑使用res.locals从回调中保存一些数据(而不是使用theVariable1和theVariable2,但是这样做是个好主意,因为客户端会同时发出多个请求,因此数据不会被覆盖?
每个请求Node.js / Express服务器都会生成一个新的req
对象。
所以在router.post('/test123', function(req, res)
行中,作为参数传入的req
对象对于该HTTP连接是唯一的。
您不必担心多个函数或回调。在传统的应用程序中,如果我有两个对象cat
和dog
,我可以传递给listen
函数,我会回到meow
和bark
。即使只有一个listen
功能。这就是你可以查看Express应用程序的方式。即使您拥有所有这些get
和post
函数,每个用户的请求也会作为唯一实体传递给它们。