В Express. js Я хочу выполнить задачу после отправки ответа.
Однако я хочу, чтобы время отклика было как можно быстрее. Мне не нужно возвращать результаты этой задачи клиенту, поэтому я пытаюсь вернуть ответ немедленно.
Задача не загружает процессор, тогда событие l oop isn ' t заблокирован этой задачей.
Итак, это моя фоновая задача:
function backgroundTask() {
return new Promise(resolve => setTimeout(() => {
console.log("backgroundTask finished");
resolve();
}, 1000));
}
Моя первая попытка - вызвать функцию backgroundTask напрямую:
app.post('/messages', async function (req, res) {
res.status(200).send({ success: true });
performBackgroundTasks();
});
вторая попытка - вызвать функцию backgroundTask в setTimeout ():
app.post('/messages', async function (req, res) {
res.status(200).send({ success: true });
setTimeout(() => performBackgroundTasks(), 0);
});
Возникает вопрос: каков наилучший метод обеспечения того, чтобы ответ отправлялся клиенту, а задача выполнялась в фоновом режиме?
БОКОВОЕ ПРИМЕЧАНИЕ: я знаю, что «лучший метод» - это использовать рабочие потоки, но мне просто нужен простой способ для выполнения фоновой задачи.