Javascript 使用elastic.js中止elasticsearch请求
是否有办法使用elasticjs取消对Elasticsearch的请求/查询?我正在使用的web应用程序每5秒钟执行一次请求/查询,但如果由于某种原因,响应在5秒钟内没有出现,我想取消请求(这样浏览器就不会堆积大量不必要的请求,因为查询会重复发生)。我知道这不会阻止Elasticsearch完成查询,但我想至少在浏览器中取消请求 例如:Javascript 使用elastic.js中止elasticsearch请求,javascript,
elasticsearch,elasticjs,Javascript,
elasticsearch,Elasticjs,是否有办法使用elasticjs取消对Elasticsearch的请求/查询?我正在使用的web应用程序每5秒钟执行一次请求/查询,但如果由于某种原因,响应在5秒钟内没有出现,我想取消请求(这样浏览器就不会堆积大量不必要的请求,因为查询会重复发生)。我知道这不会阻止Elasticsearch完成查询,但我想至少在浏览器中取消请求 例如: var request = ejs.Request().doSearch(); var dataFromElasticsearch; request.then
var request = ejs.Request().doSearch();
var dataFromElasticsearch;
request.then(function (data) {
dataFromElasticsearch = data;
});
setTimeout(function () {
if (!dataFromElasticsearch) {
//do something here to cancel request
}
}, 5000)
根据elasticsearch.js(3.1,撰写本文时):
…调用API将返回一个具有abort()方法的对象(承诺或普通对象)。调用abort方法结束HTTP请求,但不会结束Elasticsearch正在做的工作
特别针对您的示例:
setTimeout(function () {
if (!dataFromElasticsearch) {
request.abort();
}
}, 5000)
这个解决方案实际上不适用于我的特定示例,因为我给出的示例使用的是elasticjs 1.1,它使用
doSearch()
方法,但elasticjs 1.2不使用doSearch()
。任何偶然发现这个答案的人都应该注意,abort()
不是一个elastic.js方法,而是elasticsearch.js。与其像我问题中的示例那样构建请求,不如使用它并使用@timkang建议的elasticsearch.js中的abort()
。