【发布时间】:2017-03-23 05:32:04
【问题描述】:
当站点使用 jquery/XMLhttp 请求时,我们能够使用 jQuery.active 在后端获得活动的 ajax 调用。但是当网站使用 aurelia fetch 进行 ajax 调用时,如何在后端获取活动的 fetch 调用数?
【问题讨论】:
标签: aurelia
当站点使用 jquery/XMLhttp 请求时,我们能够使用 jQuery.active 在后端获得活动的 ajax 调用。但是当网站使用 aurelia fetch 进行 ajax 调用时,如何在后端获取活动的 fetch 调用数?
【问题讨论】:
标签: aurelia
我的fetch 调用有一个包装器,它在每次调用之前递增一个变量,然后在.then 代码块中减少它。这似乎运作良好。
示例代码:
getData(url) {
// Http Fetch Client to retreive data (GET)
this.apiCalls += 1;
console.log("getData from API: " + url);
return this.httpClient.fetch(url, {
credentials: 'include'
}).then(response => {
this.apiCalls -= 1;
if (!response.ok) {
throw Error(response.statusText);
}
return response.json();
}).catch(error => {
this.apiCalls -= 1;
console.log(error);
return null;
});
}
【讨论】:
getData() 例程,它进行调用并通过将响应转换为 json 进行一些预处理(特定于我的上下文,可能对你没有帮助)。您可以随时检查apiCalls 以查看有多少呼叫处于活动状态。我有另一个类似布局的postData() 并行例程。
我通过创建一个单例/全局值然后使用interceptors 配置客户端来完成此操作。在那里,您可以挂钩您的所有请求/响应。在那里修改单例,并将单例导入到需要它的任何视图模型中。 fetch-client 和 httpclient 都支持这个。
let client = new HttpClient();
client.configure(x => {
x.withInterceptor({
request(message) {
singleton.activeConnections++;
return message;
},
response(message) {
singleton.activeConnections--;
return message;
}
});
});
【讨论】: