1

有没有办法使用 elasticjs 取消对 Elasticsearch 的请求/查询?我正在开发的网络应用程序每 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)
4

1 回答 1

0

根据elasticsearch.js 的文档(在撰写本文时为 3.1):

...调用 API 将返回一个具有 abort() 方法的对象(promise 或只是一个普通对象)。调用该 abort 方法会结束 HTTP 请求,但不会结束 Elasticsearch 正在执行的工作。

专门针对您的示例:

setTimeout(function () {
    if (!dataFromElasticsearch) {
        request.abort();
    }
}, 5000)
于 2015-01-19T23:42:31.870 回答