Javascript 在AngularJS&;节点应用程序
因此,我有一个AngularJS(1)应用程序,当用户单击按钮时,它基本上运行服务器端脚本 客户端控制器在单击按钮时调用此方法: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;
$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