我有一个用c ++编写的子进程(.exe文件),它是我的节点API的子进程,后者又由angular get API调用。 现在问题是这个角度API调用节点API两次而没有得到第一次调用的响应,并在后台启动子进程(.exe文件)两次。 我已经实现了角度承诺来克服浏览器超时,它仍然会调用节点api两次。欢迎任何形式的帮助。
这是带有承诺的anularjs get请求。
angular.module('fileUpload', ['ngFileUpload'])
.controller('imgController',function(Upload,$window,$scope,$http){
$scope.btnDisabled = false;
$scope.analyse = "Analyse";
$scope.analyseFunc = function(){
$scope.btnDisabled = true;
$scope.analyse = "Analysing...";
$http.get('/api/callingExe').then(function(res){
console.log(res);
if(res.data == "ok"){
$scope.btnDisabled = false;
$scope.analyse = "Analyse";
$scope.msg = "COMPLETED!!";
} else{
$scope.btnDisabled = false;
$scope.analyse = "Analyse";
$scope.msg = "Internal Server Error : " + res.status + "Please Try again later !";
}
}).catch(function(error){
console.log("StatusCode: 503, Data: " + error);
})
};// analyseFunc
});//controller
这是由angularjs调用的节点api,并进一步启动子进程。
app.get('/api/callingExe', function(req,res,next){
console.log("processing...");
exec(file, [args],function(err, data) {
console.log('err ' + err)
console.log('data ' + data.toString());
}).on('exit', (code) => {
console.log(`child process exited with code ${code}`);
//something
res.end("ok");
});//exe on exit
});//api callingExe
更新 我点击一下后禁用按钮。同样有趣的是,一旦api被调用,然后复制的一个在一段时间后开火(约2分钟)。
这是我在终端上获得的,exe文件被执行两次。如果有人有任何想法,请指导我。
...处理
GET / api / callingExe - - ms - -
处理...