У меня возникли трудности с написанием правильного обратного вызова. Когда пользователь делает запрос на сервер «/ city», он должен отправить запрос сторонней службе для запроса данных. Для этого я делаю http.request(), чтобы запрашивать и получать данные (нет проблем). И тогда мне нужно перенести данные в функцию res.send() вне функции getCity().отправить ответ после request.end()
Я понятия не имею. Пожалуйста, объясните мне решение и принцип работы. Спасибо!
var getCity = function(response) {
var str = ''
response.on('data', function (chunk) {
str += chunk;
});
response.on('end', function() {
//what to do?
});
}
app.get('/city', function (req, res) {
var request = http.request(options, getCity);
request.end();
res.send("ok"); //need sending str from getCity instead of "ok";
});
Ничего себе, это работает! Но я не понимаю, как работает «next()» ... app.get() выглядит как app.get ('/ city', callback (req, res, next) [, callback (req, res, next) ...]), когда «следующий» вызывает новый обратный вызов? – Archarious
Это называется промежуточным программным обеспечением уровня маршрутизатора, поэтому он переходит к следующей функции обратного вызова или если функции обратного вызова не определены, то будет запускаться соответствующий маршрут. Подробнее здесь: http://expressjs.com/guide/using-middleware.html#middleware.router –
Ну, это то, что мне нужно! Большое спасибо! – Archarious