我是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,但是这样做是个好主意,因为客户端会同时发出多个请求而不会覆盖数据?
答案 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连接是唯一的。
您不必担心多个功能或回调。在传统的应用程序中,如果我有两个req
和cat
对象,我可以将其传递给dog
函数,我会返回listen
和meow
。即使只有一个bark
函数。这就是你可以查看Express应用程序的方式。即使您拥有所有这些listen
和get
函数,每个用户的请求也会作为唯一实体传递给它们。