Как установить тайм-аут в Fetch API, используя реагировать js - PullRequest
0 голосов
/ 10 марта 2019

Я использую метод выборки post в реагировать на js, и при отправке запроса в бэкэнд требуется 7 минут, чтобы предоставить ответ, и перед тем, как этот интерфейс автоматически истечет время ожидания.Можете ли вы помочь мне, как установить 10 минут времени в методе выборки для фронта, чтобы ждать ответа и тайм-аут только, когда бэкэнд занимает более 10 минут.Пожалуйста, дайте нам знать, если мне нужно установить какую-либо зависимость.

Также просто чтобы сообщить вам, что я установил зависимость "whatwg-fetch-timeout": "^ 2.0.2-timeout", и она работала нормально при разработкесервер, но при попытке создать пакет сборки не удалось создать сборку сборки.пример кода:

fetch("http://" + hostName + ":" + port + "/searchData", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    Login: login,
    ID: id
  },
  body: JSON.stringify({
    StartDate: StartDate === "" ? null : StartDate,
    EndDate: EndDate === "" ? null : EndDate,
    FileName: FileName === "" ? null : FileName,
    RecordCount: RecordCount === "" ? null : RecordCount,
    Status: Status
  })
})
  .then(response => {
    resStatus = response.status;
    return response.json();
  })
  .then(responseJson => {
    //source code
  })
  .catch(error => {});

Ответы [ 2 ]

1 голос
/ 10 марта 2019

Как насчет добавления собственного тайм-аута? Что-то вроде

function timeoutPromise(ms, promise) {
  return new Promise((resolve, reject) => {
    const timeoutId = setTimeout(() => {
      reject(new Error("promise timeout"))
    }, ms);
    promise.then(
      (res) => {
        clearTimeout(timeoutId);
        resolve(res);
      },
      (err) => {
        clearTimeout(timeoutId);
        reject(err);
      }
    );
  })
}

, затем вызовите его в асинхронном / ожидающем синтаксисе ES7

async request() {
  try { 
    let res = await timeoutPromise(10*60*1000, fetch('/hello'));
  } catch(error) {
    // might be a timeout error
  }
}

Также для ref Тайм-аут запроса Fetch API? Попробуйте это.

0 голосов
/ 10 марта 2019

Если у вас есть контроль над сервером, рассмотрите возможность отправки кода состояния 102 (Обработка еще) между запросом и окончательным ответом, чтобы клиент не знал, что время ожидания истекло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...