Javascript 在AngularJS&;节点应用程序

Javascript 在AngularJS&;节点应用程序,javascript,angularjs,node.js,Javascript,Angularjs,Node.js,因此,我有一个AngularJS(1)应用程序,当用户单击按钮时,它基本上运行服务器端脚本 客户端控制器在单击按钮时调用此方法: $scope.executeDeployScript = function (demo) { console.log("Starting "+ demo.instanceName); $scope.clearDeploymentStatus(); $scope.processStarted = true;

因此,我有一个AngularJS(1)应用程序,当用户单击按钮时,它基本上运行服务器端脚本

客户端控制器在单击按钮时调用此方法:

   $scope.executeDeployScript = function (demo) {
        console.log("Starting "+ demo.instanceName);
        $scope.clearDeploymentStatus();

        $scope.processStarted = true;

        $http.get('/api/demoSelect/startDemo', {
            params: {
                name: demo.instanceName,
                path: demo.scriptPath
            }
        }).success(function (data) {

            if (data === "Done") {

                $http.get("/api/demoSelect/startDemo/ip", {
                    params: {
                        name: demo.instanceName
                    }
                }).success(function (data) {

                    demo.url = data.replace(/\s/g, '') + ":" + demo.port
                    $scope.deploymentStatus = data.replace(/\s/g, '') + ":" + demo.port;
                    $scope.deploymentSuccess = true;
                });
            } else {
                $scope.deploymentStatus = "Demo deployed failed. Try again : " + data;
                $scope.deploymentSuccess = false;
            }
        });
服务器端路由:

app.get("/api/demoSelect/startDemo", function (req, res, next) {

    var child;
    var demoName = req.query.name;
    var demoPath = req.query.path;
    var response = "";

    console.log("Running boot script for "+ demoName);
    child = exec(demoPath + " " + demoName,
        function (error, stdout, stderr) {

            if (error !== null) {
                console.log('exec error!: ' + stderr);
                res.send(stderr);
            } else {
                console.log(stdout);
                res.send("Done");
            }
        });

});
脚本需要很长时间才能完成(几分钟),我注意到GET请求在几分钟后被重复,这反过来会中断当前运行的脚本并再次启动它。重复只发生在服务器端,因为没有任何客户端代码被再次执行。我注意到get请求在gulp调试输出中被重复

我是否需要为长get请求调整超时时间值,以防止它们重复?如果是这样的话,这是在节点还是角度上处理的


非常感谢您的帮助

您可以通过分页进行增量加载吗?有时,如果一个请求没有得到足够快的解决,我可以看到它在返回服务器错误或其他错误之前重新尝试了1-3次similar@Fallenreaper这是处理耗时脚本加载的合理解决方案吗?这会有什么帮助?当然可以。使用进度条,它将向目标发送增量更新。这样,您就可以在success中每隔几秒钟或任何时间返回一次消费更新。在return脚本中,您可以在返回<1时执行某种更新。当它为1时,它将继续并执行“完成”设置套接字连接,而不是ajax