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

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

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

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

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


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


Ответы (2)


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

person Graham Coombe    schedule 15.08.2014
comment
У вас есть источники, подтверждающие ваш ответ? - person sushain97; 16.08.2014

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

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

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

person macsj200    schedule 16.08.2014