Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用elastic.js中止elasticsearch请求_Javascript_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Elasticjs - Fatal编程技术网 elasticsearch,elasticjs,Javascript,elasticsearch,Elasticjs" /> elasticsearch,elasticjs,Javascript,elasticsearch,Elasticjs" />

Javascript 使用elastic.js中止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

是否有办法使用elasticjs取消对Elasticsearch的请求/查询?我正在使用的web应用程序每5秒钟执行一次请求/查询,但如果由于某种原因,响应在5秒钟内没有出现,我想取消请求(这样浏览器就不会堆积大量不必要的请求,因为查询会重复发生)。我知道这不会阻止Elasticsearch完成查询,但我想至少在浏览器中取消请求

例如:

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()