Как выбрать последний вызов API, когда были сделаны несколько вызовов API - PullRequest
0 голосов
/ 06 июля 2018

Мы столкнулись с проблемой, когда несколько вызовов API выполнялись неоднократно, пользовательский интерфейс иногда отображает неверные данные.

Пример:

onPageLoad событие У меня 5 вызовов API, и у нас есть средство выбора даты, из которого мы можем выбрать даты. Когда пользователь пытается изменить селектор даты, все 5 вызовов API будут сделаны для обновления данных. Предположим, изначально я выбрал последний день и страница загружена, а теперь я изменил на последнюю неделю, затем месяц, а затем на последний день, теперь существует 15 асинхронных Были сделаны вызовы API, и в пользовательском интерфейсе мы выполняем тот вызов API, который поступил в последнее время (из-за асинхронного поведения в JS). Есть ли какой-нибудь угловой механизм для контроля этого поведения?

Ожидаемый:

Я хочу показать только самые последние данные вызова API в пользовательском интерфейсе (независимо от того, когда обещание будет выполнено) в приведенном выше примере я хочу показать только данные за последний день.

1 Ответ

0 голосов
/ 06 июля 2018

С этим кодом любой предыдущий вызов API будет отклонен. Это означает, что будет разрешен только последний вызов.

var timeout;

function callApi() {
    // Cancel any previous api call:
    timeout && timeout.resolve();

    // Create a new timeout:
    timeout = $q.defer();

    // Make the api call, passing in the timeout:
    return $http.get('/api', {timeout: timeout.promise});
}
...