Node.js тайм-аут с requesttify POST
Я пытаюсь запросить статус пользователя, с POST из node.js в файл PHP. Моя проблема в том, что веб-служба, которую я вызываю, ОЧЕНЬ медленно отвечает (4 секунды), поэтому я думаю, что.then завершает работу раньше, чем через 4 секунды, и поэтому ничего не возвращает. Есть идеи, если я могу продлить время для запроса?
requestify.post('https://example.com/', {
email: 'foo@bar.com'
})
.then(function(response) {
var answer = response.getBody();
console.log("answer:" + answer);
});
2 ответа
Я не настолько хорошо осведомлен о requesttify, но вы уверены, что можете использовать почту по адресу https? В readme only requesttify.request(...) использует адрес https в качестве примера. ( см. readme)
Один совет, который я могу точно дать вам, - это всегда выполнять ваше обещание:
requestify.get(URL).then(function(response) {
console.log(response.getBody())
}).catch(function(err){
console.log('Requestify Error', err);
next(err);
});
Это должно как минимум дать вам ошибку вашего обещания, и вы можете указать свою проблему.
Каждый вызов Requestify позволяет вам пройти через Options
объект, определение этого объекта описано здесь: Requestify API Reference
Вы используете short
метод для POST, так что сначала я покажу это, но этот же синтаксис будет работать для put
также обратите внимание, что get
, delete
, head
не принимайте аргумент данных, вы отправляете параметры запроса через params
свойство config.
requestify.post(url, data, config)
requestify.put(url, data, config)
requestify.get(url, config)
requestify.delete(url, config)
requestify.head(url, config)
Сейчас, config
имеет timeout
имущество
тайм-аут {число}
Установите время ожидания (в миллисекундах) для запроса.
Таким образом, мы можем указать время ожидания 60 секунд с помощью этого синтаксиса:
var config = {};
config.timeout = 60000;
requestify.post(url, data, config)
или встроенный:
requestify.post(url, data, { timeout: 60000 })
Итак, давайте теперь соберем это вместе в ваш первоначальный запрос:
как указывал @Jabalaja, вы должны перехватывать любые сообщения об исключениях, однако вы должны делать это с аргументом ошибки в продолжении. (
.then
)
requestify.post('https://example.com/', {
email: 'foo@bar.com'
}, {
timeout: 60000
})
.then(function(response) {
var answer = response.getBody();
console.log("answer:" + answer);
}, function(error) {
var errorMessage = "Post Failed";
if(error.code && error.body)
errorMessage += " - " + error.code + ": " + error.body
console.log(errorMessage);
// dump the full object to see if you can formulate a better error message.
console.log(error);
});