Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.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
Angularjs 将具有承诺的ES搜索服务转换为可观测服务_Angularjs_Angular_Observable_Angular Promise_<img Src="//i.stack.imgur.com/A3TTx.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch 5 - Fatal编程技术网 elasticsearch-5,Angularjs,Angular,Observable,Angular Promise,elasticsearch 5" /> elasticsearch-5,Angularjs,Angular,Observable,Angular Promise,elasticsearch 5" />

Angularjs 将具有承诺的ES搜索服务转换为可观测服务

Angularjs 将具有承诺的ES搜索服务转换为可观测服务,angularjs,angular,observable,angular-promise,elasticsearch-5,Angularjs,Angular,Observable,Angular Promise,elasticsearch 5,我想知道如何将使用promises(q库)的Elasticsearch的Angular 1.x搜索服务转换为使用Observables的Angular 4.x搜索服务 或 我还看到了toPromise,一个可观察到的转化为承诺,反之亦然。然而,我看到了一些使用Observables进行搜索和自动完成的简单示例,因此Observables似乎是Angular 4中使用HTTP的首选方式 这是我在Angular 1.x中用于自动完成的 this.getSuggestions = function(q

我想知道如何将使用promises(q库)的Elasticsearch的Angular 1.x搜索服务转换为使用Observables的Angular 4.x搜索服务

我还看到了toPromise,一个可观察到的转化为承诺,反之亦然。然而,我看到了一些使用Observables进行搜索和自动完成的简单示例,因此Observables似乎是Angular 4中使用HTTP的首选方式

这是我在Angular 1.x中用于自动完成的

this.getSuggestions = function(query) {
    var deferred = $q.defer();

    esClient.search({
      index: 'query-index',
      body: {
        "query": {
          "match_phrase_prefix": {
            "suggestions": {
              "query": query,
              "max_expansions": 10,
              "lenient": true
            }
          }
        },
        "size": 5,
        "from": 0,
        "_source": ["suggestions"]
      }
    }).then(function(es_return) {
      deferred.resolve(es_return);
    }, function(error) {
      deferred.reject(error);
    });

    return deferred.promise;
  };

我甚至不知道从哪里开始如何将其转化为可观测的?我想说的是,与其重新发明轮子,不如使用已经建成的东西

您可以使用Angular的弹性搜索库:

或者检查此线程如何适应新的角度版本:

我会选择第一个选项,它包括:

  • 角度2弹性搜索
  • 自动完成样本

我相信这就是你想要的,对吗

我想说的是,与其重新发明轮子,不如用已经建成的东西

您可以使用Angular的弹性搜索库:

或者检查此线程如何适应新的角度版本:

我会选择第一个选项,它包括:

  • 角度2弹性搜索
  • 自动完成样本

我相信这就是你想要的,对吗

因为这里没有使用
Http
服务,所以我根本看不出这与可观测数据有什么关系。esClient.search会返回一个承诺,不是吗?使用承诺。当然,您可以在以后将它们升级到Observable,但这会影响多个代码片段。这需要做一些家庭作业,而不是一个问题就能解决。@estus-我已经做了其他的家庭作业,为了简洁起见,我展示了这个片段。。。并且想让问题尽可能简洁。我们不需要像
方法一样使用
$q.delay
来制造承诺。然后
方法已经返回了承诺。看,一个好问题需要知道一半的答案。除非您确定这是代码库中唯一相关的代码段,否则我建议与您分享Angular 4的尝试,因为不应该期望应答者从头开始编写所有代码。@georgeawg有必要,因为esClient.search()可能不是$q承诺。正确的方法是
return$q.when(esClient.search())
,但无论如何,这主要是一个问题。因为您在这里没有使用
Http
服务,所以我根本看不出这与可观测数据有什么关系。esClient.search会返回一个承诺,不是吗?使用承诺。当然,您可以在以后将它们升级到Observable,但这会影响多个代码片段。这需要做一些家庭作业,而不是一个问题就能解决。@estus-我已经做了其他的家庭作业,为了简洁起见,我展示了这个片段。。。并且想让问题尽可能简洁。我们不需要像
方法一样使用
$q.delay
来制造承诺。然后
方法已经返回了承诺。看,一个好问题需要知道一半的答案。除非您确定这是代码库中唯一相关的代码段,否则我建议与您分享Angular 4的尝试,因为不应该期望应答者从头开始编写所有代码。@georgeawg有必要,因为esClient.search()可能不是$q承诺。正确的方法是
返回$q.when(esClient.search())
,但无论如何,这主要是一个问题。