javascript - 对 NodeJS 服务器的两次调用互相干扰

标签 javascript mysql node.js web

对于 Node.JS 来说相对较新,并且有一个简单的服务器,使用 http.createServer 监听端口 8081。它监听来自简单网页的 Ajax 调用。让 Node 按预期监听和响应请求没有问题。不过,我遇到的一个问题是,当我通过另一个浏览器实例或在另一台计算机上同时向同一 Node 引入第二个请求时,第二个请求会根据第一个调用参数生成结果。

在调试服务器时,我可以看到两个请求都带有预期的不同参数,但就好像第二个请求覆盖了第一个请求。来自 .NET 背景的我最初认为我有在调用之间共享的全局变量 - 但我已经消除了所有全局变量。

在保持两个单独的 Node 调用完全唯一时,我是否遗漏了一些非常明显的东西?

下面是我正在使用的代码,...(稍后发布)

var http = require("http"),
    url = require('url');

http.createServer(function(request, response) {
    var Params = url.parse(request.url, true).query;
    var CallSettings = Defaults();
    CallSettings.Location = Params.Location;
    CallSettings.Threshold = Params.Threshold;
    CaptureDataFromHost(request, response, CallSettings);

}).listen(8081);

function CaptureDataFromHost(request, response, CallSettings) {
    try {
        for (var Page = 0; Page < Pages; Page++) {
            var http = require("http"),
                url = require('url');
            var RequestString = '';
            var request = require('request');
            request(RequestString, function(error, response2, body) {
                if (!error && response2.statusCode == 200) {
                    var ResponseAsObject = JSON.parse(body);
                    CallSettings.ResponseCount++;
                    for (var i = 0; i < ResponseAsObject.products.length; i++) {
                        // various local business logic here,...
                    }

                    // If it is the last page response, run aggregate data,...
                    if (CallSettings.ResponseCount == CallSettings.Pages) {
                        AggregateAllProductData(response, Location,
                            CallSettings);
                    }
                }
            })
        }
    }
    catch (err) {
        console.log(err);
    }
}

最佳答案

需要循环...啊啊!!

正如@PatrickHund所说:再次需要请求模块是您正在寻找的明显问题。

始终在脚本开头需要模块!如果这仍然不起作用,我还想知道什么是 Default() (l. 6)

关于javascript - 对 NodeJS 服务器的两次调用互相干扰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43572084/

相关文章:

javascript - Firefox OS 应用程序(计时器)后台执行

javascript - 继承父构造函数参数

python - PyQt4 问题和在 Python 中登录 WIndow 到主窗口

mysql - 如何对sql表列进行拆分

javascript - 如何正确构造异步程序以确保正确的结果?

javascript - 解释connect session中的length和clear session store方法

javascript - 如何在指令中访问 Controller (从外部文件)的范围?

javascript - 无法使用tracking.js 追踪眼睛

mysql - 如何分析MySQL Slow Query Log或MySQL General Query Log?

javascript - 环回: Making synchronous call to loopback api