У меня есть MEAN-приложение, которое запускает тестовые наборы для множества приложений с одинаковым кодированием.Я посылаю запрос, который запускает запуск тестовых примеров в приложении через Angular6, в ExpressJS.Поскольку существует задержка в получении ответа, браузер повторно отправляет запрос, что вызывает повторный запуск процесса.
Я использовал windows.location.reload()
, и это не позволяло браузеру повторно отправлять запрос.Но браузер не получит ответ, который сервер отправит после завершения процесса.
Ниже приведен мой экспресс-код:
router.post("/trainee", (req, res, next) => {
var empList = req.body.empList;
var scriptCount = 0
asyncLoop(empList, (empId, next) => {
req.body.empId = empId;
console.log("started Script", "empId : " + empId);
return testunzip.decompress(req, res).then((msg) => {
console.log("decompressed: ", msg);
return testunzip.makeTempsolution(req, res).then((msg) => {
console.log("temp soln : ", msg);
return storage.testing(req, res).then((msg) => {
console.log("testing : ", msg);
return storage.fetchMarks(req, res).then((data) => {
data = jsonReport.parser(data, req, res)
scriptCount++
console.log("data in call: ", data)
next();
})
})
})
}).catch((err) => {
console.log(err.message)
next();
})
}, (err) => {
if (err) {
console.error('Error: ' + err.message);
}
console.log('Evaluation completed for !' + scriptCount + ' scripts');
res.send("Done!")
})
})
Это мой угловой код:
evaluateScript(data) {
this.traineesResult = null;
this.errorMessage = null;
data.empList = this.empList;
data.folderName = this.folderName;
this.service.evaluateScript(data).subscribe(
(result) => { this.traineesResult = result },
(err) => { this.errorMessage = err.error.message }
)
window.location.reload()
}
Как мне выполнить мое требование?Любые указатели будут полезны.