Очередь для вызова API, используя реагировать с избыточным? - PullRequest
1 голос
/ 07 октября 2019

Я работаю со сценарием, когда всякий раз, когда я делаю более одного вызова API, он не должен вызывать все API одновременно, а должен выдвигаться в очередь всякий раз, когда выполняется вызов API, и как только я получаю ответ, мне нужно сделать API. вызов из очереди, если длина очереди больше нуляответ, а также значения локальных переменных были сброшены. Так что я не смог остановить вызов API. Может ли кто-нибудь помочь в достижении этой очереди для вызовов API и предложить мне лучший подход для достижения того же, используя либо javascript, либо реагировать с приставкой?

1 Ответ

0 голосов
/ 07 октября 2019

Вот пример использования onlyLastRequestedPromise :

const makingAnApiCall = async (url, last = x => x) => {
  let response;
  try {
    response = await last(axios({ url, method: get }));
  } catch (e) {
    if (e === 'A newer request was made.') {
      //ignore this error, current request replaced
      //  with newer one
      return;
    }
    //something else went wrong, rethrow the error
    throw e;
  }
  if (response.status) {
    apiInProgressCheckFn(false, url);
    if (
      response.status === 200 ||
      response.status === 201
    ) {
      dispatch(success(response));
    } else {
      dispatch(failed(response));
    }
  }
};
//IIFE to initialize last only once
const lastSearchApiResult = (() => {
  const last = onlyLastRequestedPromise('search');
  return url => makingAnApiCall(url, last);
})();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...