javascript – Angular 2.0 – 将promise链接转换为Observables

我正在将NG 1.X服务转换为NG 2.0.

我的NG 1.X服务承诺链接(简化):

dataService.search = function(searchExp) {
      return this.getAccesstoken()
      .then(function(accesstoken) {
        var url = $interpolate('https://my-api-url?q={{search}}&{{accesstoken}}')({search: searchExp,accesstoken: accesstoken});
        return $http({
          url: url,method: 'GET',cache: true
        });
      }).then(function(response) {
        return response.data;
      });
    };

我想将搜索服务转换为Angular 2.0服务,使用http并返回Observable.我更喜欢保持getAccesstoken服务不变,作为NG 1.X服务,它返回一个promise.

我正在考虑在旧的“承诺”服务上使用Observable.fromPromise.

我该怎么做?我该如何将这两个链接起来?

编辑:

只是为了澄清,我希望它是这样的:

dataService.search = function(searchExp) {
 return this.getAccesstoken()
        .then(function(accesstoken) {
           //Here I want to use:
           // this.http.get(url).subscribe(() => ...)
          });
        };

解决方法

你应该让搜索方法返回Observable对象.像这样的东西:
dataService.search = function(searchExp) {

    var promise = new Promise((resolve,reject) => {
        this.getAccesstoken()
            .then(accesstoken => {
                return this.http.get('data.json')
                    .map(response => response.json())
                    .subscribe(data => resolve(data),err => reject(err))
            })
    });

    return PromiSEObservable.create(promise); // Observable.fromPromise(promise)
};

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...