Aurelia HttpClient отменить запросы

Я пытаюсь создать компонент автозаполнения и хочу, чтобы он отменял неразрешенные запросы к серверу во время их ввода.

Я не могу найти документацию по этому вопросу в документации для HttpClient. Он упоминает, что он отменяемый (в отличие от fetch), но не как. https://aurelia.io/docs/plugins/http-services

В настоящее время у меня есть это, которое я слепо собрал вместе, что неудивительно, что он даже не прерывает запросы:

async searchTermChanged(newValue, oldValue) {   
    if (newValue.length < 3)
      return;

    if (this.promises.length) {
       this.promises.forEach(x => x.abort());
       //should probably remove too
    }

    var promise = this.httpClient.post(this.endpoint, { SearchTerm: newValue });
    this.promises.push(promise);

    var data = await promise;

    var response = JSON.parse(data.response);

    this.results = response;
  }
}

Где я могу узнать больше информации о том, как делать отменяемые запросы? Мой гугл-фу подводит меня.

1 ответ

Решение

Похоже, вы можете сделать это:

this.client["pendingRequests"].forEach(request => {
   request.abort();
});

Я должен сделать ["pendingRequests"] так как я использую TypeScript и массив, кажется, не входит в определение.

Примечание. Я также использую HttpClient с заданной областью для каждого автозаполнения, чтобы при отмене всех предыдущих запросов он случайно не отменял что-то еще, запрашиваемое приложением.

Другие вопросы по тегам