Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Есть ли способ ответить на GET\POST вне конкретной функции (req, res)?

Автор вопроса: Arel SapirОтветов: 2

используя Express (NodeJS), есть ли способ сохранить детали запроса, чтобы ответ был сделан позже? (в основном, оставляя запрос висящим для ответа). без использования setTimeout() или сна или любой другой задержки.

например, если это моя функция:

function(req, res) {
    var data = req.body;
    setTimeout(function() {
        res.json(data);
    }, 3000);
}

возможно ли использовать объекты (req, res) за пределами этой области действия И успешно ответить на конкретный запрос в более позднее время? (например, через 30 секунд или в другой части кода)

  • не используя setTimeout() Arel Sapir 16.08.2014
  • похоже, вы ищете длинный опрос ... Может быть, такая библиотека? https://www.npmjs.org/package/http-delayed-response pherris 16.08.2014
  • Когда вы говорите "или в другой части кода", вы имеете в виду другую точку выполнения? Когда вы говорите "позднее время", вы имеете в виду физическое время или более позднее время в программе? macsj200 16.08.2014

requestresponseexpresslow-level

Ответы

Ответ 1 · Graham Coombe

Нет, я так не думаю. Запрос/ответ специфичны для вызова обработчика.

Ответ 2 · macsj200

Да, это возможно. Все, что вам нужно сделать, это вызвать длительно работающую неасинхронную (блокирующую) функцию перед вызовом res.json() или любой другой функции, которая отправляет ответ, например.

function(req, res) {
    var data = longRunningNonAsyncFsCall();
    res.jsonp(data);
}

Я не думаю, что setTimeout() это то, что вам нужно.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы