我正在尝试构建一个自动完成组件,并希望在输入时取消对服务器的未解决请求。
在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;
}
}
在哪里可以找到有关如何提出可取消请求的更多信息?我的Google-fu使我失败了。
答案 0 :(得分:2)
您可以执行以下操作:
this.client["pendingRequests"].forEach(request => {
request.abort();
});
由于我正在使用TypeScript,因此我不得不做["pendingRequests"]
,而且数组似乎不在定义之内。
注意:我还在每个自动完成操作中使用了范围限定的HttpClient,因此当它取消所有先前的请求时,不会意外取消该应用程序正在请求的其他内容。