Время ожидания маршрута Express.js и Axios - PullRequest
0 голосов
/ 22 мая 2018

Я использую express.js для генерации некоторого маршрута для частного проекта.Этот конкретный маршрут занимает очень много времени (около 3 минут).Поскольку это проект только для меня, я действительно не против ждать.

Вот мой маршрут:

router.get('/', (req, res) => {
  req.setTimeout(0);
  console.log('Start ' + new Date());
  let data = [];
  //... very large code that fetch a lots of data and update the data variable
  res.json(data);
  console.log('End ' + new Date());
});

Если я выполняю запрос непосредственно в URL браузера,загрузка страницы занимает много времени, но через некоторое время результат будет отображаться правильно.

Но если я использую axios, чтобы сделать запрос ajax, например,

axios({
  method: 'get', 
  url: `/api/simulation?idSession=${this.props.match.params.session}`,
  timeout: 600000,
}).then(result => {

  this.setState({
    simulation: {
      loading: false,
      data: result.data
    }
  }).catch(err => alert(err));
});

Iполучит первый файл console.log со словом «Пуск» и датой, и примерно через 2 минуты (более или менее через несколько миллисекунд) я снова получу «Start. console.log» и снова.

Я буду получать журнал консоли «Пуск» в цикле, пока не перезапущу сервер узлов или не закрою страницу браузера с помощью запроса ajax.

Я все равно увижу «End» console.log после этого, но axios, кажется, игнорирует это.

Хотя я добавил это, добавив req.setTimeout (0);на моем маршруте это могло бы решить проблему, но, похоже, это ничего не меняет.

И поскольку проблема возникает только тогда, когда я вызываю маршрут через запрос ajax с axios, я попытался поставить большойтайм-аут, но это тоже ничего не дало.

На всякий случай, моя версия nodejs - 8.11.2, экспресс-версия - 4.16.3, а axios - 0.18.0

У кого-то есть другая идея,или способ отключить все таймауты?

Спасибо

...