Мне интересно, можно ли отменить или приостановить все действия oop, которые выполняются в NodeJs. В моем случае у меня есть функция, которую пользователь вызывает через клиент angular и отправляет письмо списку людей. В NodeJs есть функция, которая перебирает список и отправляет электронное письмо. Я также обеспечил прогресс через socket.io, который все прекрасно работает. Вопрос в том, есть ли способ прервать, отменить этот l oop с клиента, как только он будет запущен. Ниже приведен мой код, который я сейчас использую для обновления клиента прогресса и c.
campRoutes.post('/sendEmail/:socketid?', token_check, async(req, res) => {
try {
// Get Socket info
const socketid = req.params.socketid
let emails
if (req.body.massEmailType == 'Farm') {
emails = await bulk.getEmails(req.body.tractList)
let recCount = emails[0].length
// Calculate the delay timer based on record count
// If the client send SocketID we will update via socket
if (socketid) {
console.log(socketid)
io.to(`${socketid}`).emit('emailCount', {count: recCount})
}
let i = 1
while (i <= recCount){
if (socketid) {
//TODO: Add Email Send Code
io.to(`${socketid}`).emit('emailProcessed', {count: i})
io.to(`${socketid}`).emit('massEmailSend', {name : emails[0][i-1].name , address :emails[0][i-1].address})
console.log('Sending Message ' + emails[0][i-1].address)
i++
await sleep(150)
}
}
}
res.json({ Success: true , Error: "", Message:"", Data:emails})
} catch (error) {
console.log(error)
res.json({ Success: false , Error: error.Error, Message:error.Error})
}
})